Когда я могу использовать явный оператор bool без приведения?C++

Программы на C++. Форум разработчиков
Anonymous
Когда я могу использовать явный оператор bool без приведения?

Сообщение Anonymous »

Мой класс имеет явное преобразование в bool:

Код: Выделить всё

struct T {
explicit operator bool() const { return true; }
};
и у меня есть такой экземпляр: Чтобы присвоить его переменной типа bool, мне нужно явно вызвать оператор или написать приведение:

Код: Выделить всё

bool b = t.operator bool();
bool b = static_cast(t);
bool b = bool{t};  // or bool(t)
bool b(t);  // converting initialiser
bool b{static_cast(t)};
Я знаю, что могу использовать свой тип непосредственно в условном выражении без приведения, несмотря на явный квалификатор:

Код: Выделить всё

if (t)
/* statement */;
Где еще я могу использовать t как логическое значение без приведения?

Подробнее здесь: https://stackoverflow.com/questions/399 ... out-a-cast

Вернуться в «C++»