有可能吗?我希望这样可以启用参数的编译时传递。假设它只是为了用户方便,因为总是可以使用来键入实型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);
- 3 回答
- 0 关注
- 528 浏览
添加回答
举报
0/150
提交
取消