在C ++中使用auto实现非类型模板参数14

时间:2017-03-15 04:01:53

标签: c++ c++14 c++17 non-type

有没有办法可以模仿C ++ 14中的auto deduction in non type template parameters?类似于如何使用模板化函数在C ++ 11中模仿C ++ 14 lambdas中的无约束参数?

1 个答案:

答案 0 :(得分:1)

排序。当然,您可以使用非类型模板参数,但需要指定类型。常见的习语是:

template <class T, T Value>
struct X;

但是你不能用X<3>来实例化它。你能做的最好的事情是引入一个宏来为你提取类型:

#define DECL(expr) decltype(expr), (expr)
X<DECL(3)> x;

3对于for (var i = 1; i <= 10; i++) { wait('something', i, 10); } function wait(msg, i, length){ setTimeout(function () { console.log(msg) ; }, (i * 3000)); }来说显然是愚蠢的,但是当你想提供类似函数指针作为非类型模板参数的东西时,确实会有所帮助。