小编5r1*_*Oi1的帖子

C ++编译时检查可以使用某种类型的参数调用重载函数

考虑重载函数

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++

5
推荐指数
1
解决办法
540
查看次数

标签 统计

c++ ×1