Сообщение Re[7]: enum class and if expression от 18.12.2019 14:27
Изменено 18.12.2019 14:28 rg45
Re[7]: enum class and if expression
Здравствуйте, удусекшл, Вы писали:
R>>Ну это было еще в пору C++03, когда еще не было explicit operator bool.
У>В смысле? Для операторов приведения нельзя было explicit указать?
Нет конечно Это фишка C++11.
R>>И void* — это была самая ранняя версия, потом начали выбирать типы посложнее — разнообразные указатели на функции-члены.
У>А можно поподробнее? А то я что-то пропустил этот момент
Ну эскизно так:
А были еще такие маньяки (типа меня), которые специально для этих целей вводили фейковые функции, в списке формальных параметров присутствовали типы, определенные в закрытой секции класса — чтоб уж точно таким указателем невозможно было воспользоваться
R>>Ну это было еще в пору C++03, когда еще не было explicit operator bool.
У>В смысле? Для операторов приведения нельзя было explicit указать?
Нет конечно Это фишка C++11.
R>>И void* — это была самая ранняя версия, потом начали выбирать типы посложнее — разнообразные указатели на функции-члены.
У>А можно поподробнее? А то я что-то пропустил этот момент
Ну эскизно так:
class Foo
{
typedef bool (*UnspecifiedBool)() const;
public:
bool empty() const;
operator UnspecifiedBool() const { !empty() ? &Foo::empty() : 0; }
};
А были еще такие маньяки (типа меня), которые специально для этих целей вводили фейковые функции, в списке формальных параметров присутствовали типы, определенные в закрытой секции класса — чтоб уж точно таким указателем невозможно было воспользоваться
Re[7]: enum class and if expression
Здравствуйте, удусекшл, Вы писали:
R>>Ну это было еще в пору C++03, когда еще не было explicit operator bool.
У>В смысле? Для операторов приведения нельзя было explicit указать?
Нет конечно Это фишка C++11.
R>>И void* — это была самая ранняя версия, потом начали выбирать типы посложнее — разнообразные указатели на функции-члены.
У>А можно поподробнее? А то я что-то пропустил этот момент
Ну эскизно так:
А были еще такие маньяки (типа меня), которые специально для этих целей вводили фейковые функции, в списке формальных параметров присутствовали типы, определенные в закрытой секции класса — чтоб уж точно таким указателем невозможно было воспользоваться
R>>Ну это было еще в пору C++03, когда еще не было explicit operator bool.
У>В смысле? Для операторов приведения нельзя было explicit указать?
Нет конечно Это фишка C++11.
R>>И void* — это была самая ранняя версия, потом начали выбирать типы посложнее — разнообразные указатели на функции-члены.
У>А можно поподробнее? А то я что-то пропустил этот момент
Ну эскизно так:
class Foo
{
typedef bool (*UnspecifiedBool)() const;
public:
bool empty() const;
operator UnspecifiedBool() const { !empty() ? &Foo::empty : 0; }
};
А были еще такие маньяки (типа меня), которые специально для этих целей вводили фейковые функции, в списке формальных параметров присутствовали типы, определенные в закрытой секции класса — чтоб уж точно таким указателем невозможно было воспользоваться