在C 14中使用自动实现非型模板参数

Achieving non-type template parameters with auto in C++14

本文关键字:非型 实现 参数      更新时间:2023-10-16

是否有一种方法可以模仿C 14中的非类型模板参数中的自动扣除?类似于如何模仿C 14 lambdas中C 11中的无约束参数?

有点。当然,您可以具有非类型模板参数,但是您需要指定类型。常见的成语是:

template <class T, T Value>
struct X;

,但是您无法与之实例化X<3>。您能做的最好的就是介绍一个宏来为您拔出类型:

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

3显然很愚蠢,但是当您想提供函数指针作为非类型模板参数时确实有所帮助。