如何检查成员函数是否在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 >);
}
答案 0 :(得分:2)
您可以使用以下方法之一:
noexcept(std::declval<C>().f(42))
或
std::is_nothrow_invocable_v<decltype(&C::f), C, int>
注意:您需要一个实例来调用成员函数。