Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

explicit_operator_bool

Boost , Chapter 1. Boost.Core , Chapter 1. Boost.Core

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Authors

  • Андрей Семашев

Заголовок<<boost/core/explicit_operator_bool.hpp>>предоставляет<BOOST_EXPLICIT_OPERATOR_BOOL()>,<BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()>и<BOOST_CONSTEXPR_EXPLICIT_OPERATOR_BOOL()>макросы-помощники совместимости, которые расширяются до явного оператора преобразования до<bool>. Для компиляторов, не поддерживающих явные операторы преобразования, введенные в C++11, макросы расширяются до оператора преобразования, который реализует безопасную идиомуbool. В случае, если компилятор не способен хорошо обрабатывать безопасную идиому, макросы расширяются до обычного оператора преобразования до<bool>.

Оба макроса должны быть помещены в определение класса пользователя. Сгенерированные операторы преобразования будут реализованы в терминах<operator!()>, которые должны быть определены пользователем в этом классе. В случае<BOOST_CONSTEXPR_EXPLICIT_OPERATOR_BOOL()>генерируемый оператор преобразования будет объявлен<constexpr>, что требует, чтобы соответствующий<operator!()>также был<constexpr>.

template< typename T >
class my_ptr
{
    T* m_p;
public:
    BOOST_EXPLICIT_OPERATOR_BOOL()
    bool operator!() const
    {
        return !m_p;
    }
};

Теперь<my_ptr>можно использовать в условных выражениях, аналогично обычному указателю:

my_ptr< int > p;
if (p)
    std::cout << "true" << std::endl;
boost 1.56
  • Добавлены новые макросы<BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT>и<BOOST_CONSTEXPR_EXPLICIT_OPERATOR_BOOL>для определения<noexcept>и<constexpr>операторов.
  • Заголовок переместился в Буст. Ядро.
boost 1.55
  • Макро было извлечено из Boost. Лог.

PrevUpHomeNext

Статья explicit_operator_bool раздела Chapter 1. Boost.Core Chapter 1. Boost.Core может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 1. Boost.Core ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:36:44/0.025132179260254/1