Re[7]: enum class and if expression
От: rg45 СССР  
Дата: 18.12.19 14:27
Оценка:
Здравствуйте, удусекшл, Вы писали:


R>>Ну это было еще в пору C++03, когда еще не было explicit operator bool.

У>В смысле? Для операторов приведения нельзя было explicit указать?

Нет конечно Это фишка C++11.

R>>И void* — это была самая ранняя версия, потом начали выбирать типы посложнее — разнообразные указатели на функции-члены.

У>А можно поподробнее? А то я что-то пропустил этот момент

Ну эскизно так:

class Foo
{
    typedef bool (Foo::*UnspecifiedBool)() const;
public:
    bool empty() const;
    operator UnspecifiedBool() const { !empty() ? &Foo::empty : 0; }
};


А были еще такие маньяки (типа меня), которые специально для этих целей вводили фейковые функции, в списке формальных параметров которых присутствовали типы, определенные в закрытой секции класса — чтоб уж точно таким указателем невозможно было воспользоваться
--
Отредактировано 18.12.2019 14:31 rg45 . Предыдущая версия . Еще …
Отредактировано 18.12.2019 14:30 rg45 . Предыдущая версия .
Отредактировано 18.12.2019 14:28 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.