具有成员函数的std :: is_nothrow_invocable

时间:2017-05-30 18:45:16

标签: c++ invoke typetraits noexcept member-functions

如何检查成员函数是否在C ++ 17中不可调用?

我知道我的班级C有一个名为f的成员函数,想要知道它是否可以用int作为参数进行调用。

#include <type_traits>

struct C{
    void f(int){}
};

int main(){
    // How to use is_nothrow_invocable_v???
    static_assert(std::is_nothrow_invocable_v< &C::f, int >);
}

1 个答案:

答案 0 :(得分:2)

您可以使用以下方法之一:

noexcept(std::declval<C>().f(42))

std::is_nothrow_invocable_v<decltype(&C::f), C, int>

注意:您需要一个实例来调用成员函数。