【发布时间】:2016-04-19 01:11:51
【问题描述】:
我有一个类,我已经像这样显式地重载了运算符 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++ 的内容,以防有人好奇我为什么不只使用第二种语法。
即使在这种情况下,两者之间的差异仍然是一个悬而未决的问题。
【问题讨论】:
-
FWIW,
fooobj.operator bool()和(bool)(fooobj)在 C++ 中没有区别。我不知道它们在 gdb 中有什么不同。 -
@RSahu 这正是我的理解。但是,它似乎绝对不是那样工作的。
-
有no difference。你的问题似乎更多是关于 GDB 的操作而不是关于 C++。
-
@KerrekSB 嗯,这可能是 gdb 的一个怪癖。
-
@owagh:有人告诉我 gdb 可能不是一个完整的 C++ REPL...
标签: c++ c++11 gdb clang++ conversion-operator