C++ 显式运算符布尔错误

C++ 显式运算符布尔错误,c++,c++11,operator-overloading,explicit,C++,C++11,Operator Overloading,Explicit,当我尝试实现显式运算符bool时,我得到: class C { public: explicit operator bool() const { return !!*this; } }; 为什么??我如何解决这个问题? 我正在使用Visual Studio 2012 RC。Visual Studio 2012不支持显式转换运算符,请参阅 这些文章讨论了安全布尔成语: 如果你查看一个功能列表,你会发现它不是一个可用的功能。查看尚未添加的节目。据我所

当我尝试实现
显式运算符bool
时,我得到:

class C
{
public:

    explicit operator bool() const
    {
        return !!*this;
    }
};
为什么??我如何解决这个问题?

我正在使用Visual Studio 2012 RC。

Visual Studio 2012不支持显式转换运算符,请参阅

这些文章讨论了安全布尔成语:


如果你查看一个功能列表,你会发现它不是一个可用的功能。查看尚未添加的节目。

据我所知,Visual Studio不支持此功能。我想你已经被安全的bool习惯用法“^Whack.wird”卡住了,在g++4.7中,它以一种奇怪的方式执行无限循环……这会产生@Agent\L这是一种奇怪的方式,表示
返回true。我怀疑OP是这样实现的,因为
操作符
已经用所需的语义重载,但只是没有包含在示例代码中。@Agent\u L:不,编译器没有非常精确地定义这些语义。。。或者,事实上,我想是的。他们将其定义为“去你的,去玩炸药吧,我不会帮你的。”在VisualStudio2012中,我安装了11月的CTP:这个编译器升级包应该添加(在其他C++11功能中)显式转换操作符。但是语法仍然不起作用。我错过什么了吗?