noexcept取决于会员的方法

时间:2014-12-02 04:34:51

标签: c++ c++11 noexcept

this question相关,我想在我的公共界面之后指定我的私人部分。

template<class T, void (T::*f)()>
class B
{
public:
    void g(int y) noexcept(noexcept(x.*f()))
    {}
private:
    T& x;
};

但是我从Clang那里得到一个错误,即x是一个未声明的标识符。

mm_test.cpp:14:34: error: use of undeclared identifier 'x'
    void g(int y) noexcept(noexcept(x.*f()))
                                    ^

如果成员x的声明发生在g的声明之前,它编译得很好。我不应该在类定义中的noexcept运算符中使用成员变量而不是声明吗?如果没有,如果不移动x的声明,我怎么能实现等效的noexcept说明符?

0 个答案:

没有答案