相关疑难解决方法(0)

是否可以模拟模板<auto X>?

它有可能吗?我希望它能够启用参数的编译时传递.假设它只是为了方便用户,因为人们可以随时输出真实类型template<class T, T X>,但是对于某些类型,即指向成员函数的指针,即使使用decltype快捷方式,它也非常繁琐.请考虑以下代码:

struct Foo{
  template<class T, T X>
  void bar(){
    // do something with X, compile-time passed
  }
};

struct Baz{
  void bang(){
  }
};

int main(){
  Foo f;
  f.bar<int,5>();
  f.bar<decltype(&Baz::bang),&Baz::bang>();
}
Run Code Online (Sandbox Code Playgroud)

是否有可能将其转换为以下内容?

struct Foo{
  template<auto X>
  void bar(){
    // do something with X, compile-time passed
  }
};

struct Baz{
  void bang(){
  }
};

int main(){
  Foo f;
  f.bar<5>();
  f.bar<&Baz::bang>();
}
Run Code Online (Sandbox Code Playgroud)

c++ templates type-inference

17
推荐指数
2
解决办法
3059
查看次数

标签 统计

c++ ×1

templates ×1

type-inference ×1