为了账号安全,请及时绑定邮箱和手机立即绑定

可以模拟template <auto X>吗?

可以模拟template <auto X>吗?

C++
月关宝盒 2019-10-21 10:45:58
有可能吗?我希望这样可以启用参数的编译时传递。假设它只是为了用户方便,因为总是可以使用来键入实型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>();}可以将其转换为以下内容吗?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>();}
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

这是不可能的。实现的唯一方法是将参数传递给函数:


struct Foo{

  template<class T> void bar(T& X) {}

};

然后将函数称为


f.bar(5);

f.bar(&Baz::bang);


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 528 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信