У меня есть класс, для которого я перегрузил BOOL оператор явно, как это: -В чем разница между объектами object.operator bool() и (bool)?
class Foo {
explicit operator bool() {
// return_something_here
}
};
Однако, когда я бегу в БГД следующие два я получаю: -
gdb) p fooobj.operator bool()
$7 = true
gdb) p (bool)(fooobj)
$8 = false
В чем разница между двумя вызовами и почему они возвращают разные вещи?
Редактировать: - Я использую компилятор clang.
Примечание: - Второе значение (false) - это правильное значение, которое я хочу вернуть с помощью первого синтаксиса. Я использую codegen, поэтому у меня нет полного контроля над тем, что C++ генерируется, если кому-то интересно, почему я не просто использую второй синтаксис.
Даже в этом случае разница между ними все равно осталась бы без ответа.
FWIW, нет разницы между 'fooobj.operator bool()' и '(bool) (fooobj)' в C++. Я не знаю, как они отличаются в gdb. –
@RSahu Это именно то, что я понял. Однако, похоже, это не работает так. – owagh
Существует [без разницы] (https://ideone.com/V88alD). Ваш вопрос, похоже, больше связан с работой GDB, чем с C++. –