我有一个类,我已经像这样显式地重载了运算符 bool:-
class Foo {
explicit operator bool() {
// return_something_here
}
};
但是,当我在 gdb 中运行以下两个时,我得到:-
gdb) p fooobj.operator bool()
$7 = true
gdb) p (bool)(fooobj)
$8 = false
这两个调用有什么区别,为什么它们返回不同的东西?
编辑:- 我正在使用 clang 编译器。
注意:- 第二个值 (false) 是我希望使用第一种语法返回的正确值。我正在使用代码生成器,因此我无法完全控制生成的 c++,以防有人好奇我为什么不只使用第二种语法。
即使在那种情况下,两者之间的差异仍然是一个悬而未决的问题。