考虑重载函数
void f(int);
void f(long);
void f(double);
void f(MyClass);
Run Code Online (Sandbox Code Playgroud)
以及未知参数类型的模板类中的方法
template <class T>
struct C {
void method(T arg) { ... }
};
Run Code Online (Sandbox Code Playgroud)
我想在编译时检查是否有一个版本f可以arg作为参数。
template <class T>
struct C {
void method(T arg) {
if constexpr (CAN_BE_CALLED(f, arg)) {
f(arg);
} else {
g();
}
}
};
Run Code Online (Sandbox Code Playgroud)
c++ ×1