问题 显式运算符bool错误


我明白了 编译器错误C2071 当我尝试实现的时候 explicit operator bool

class C
{
public:

    explicit operator bool() const
    {
        return !!*this;
    }
};

为什么?我怎么解决这个问题?
我正在使用Visual Studio 2012 RC。


2176
2017-07-06 15:24


起源

据我所知,Visual Studio不支持此功能。我想你一直坚持使用安全的bool成语^ Whack。 - R. Martinho Fernandes
做无限循环的怪异方式...... - PlasmaHH
在g ++ 4.7中,它产生了 堆栈溢出。 - Robᵩ
@Agent_L这将是一种奇怪的说法 return true;。我怀疑OP是这样实现的,因为 operator! 已经超载了所需的语义,但只是未包含在示例代码中。 - R. Martinho Fernandes
@Agent_L:不,编译器可以 不 非常准确地定义那些......或者,实际上,我猜它们确实如此。他们把它定义为“搞砸你,玩爆炸物,我不会帮你出去”。 - Xeo


答案:


Visual Studio 2012不支持显式转换运算符,请参阅 C ++ 11 Visual C ++ 11中的功能

这些文章谈到了 安全的bool成语


11
2017-07-06 15:31



在Visual Studio 2012中,我安装了11月CTP: aka.ms/vc-ctp 此编译器升级包应该添加(在其他C ++ 11功能中)显式转换运算符。但语法仍然无效。我错过了什么吗? - prapin


如果你看一下清单 Visual Studio 2010中的功能 你可以看到它不是一个可用的功能。一看 Visual Studio 2012中Visual C ++的新增功能 显示尚未添加。


2
2017-07-06 15:34