我正在尝试做这项工作:
template < typename T, T VALUE >
void f()
{
/* ... */
}
int main()
{
f<10>(); // implicit deduction of [ T = int ] ??
return (0);
}
目的是简化更复杂的模板。
经过多次搜索,我没有找到在 C++0x 上执行此操作的任何方法,因此 stackoverflow 是我最后的选择。
- 没有指定所有类型的 T 可能...
- 我使用的是 g++ C++0x,所以性感的东西是允许的。
最佳答案
C++0x 引入了 decltype()
,它完全可以满足您的需求。
int main()
{
f<decltype(10), 10>(); // will become f<int, 10>();
return 0;
}
关于C++模板非类型参数类型推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6737374/