C++17 非类型模板参数的auto 和 DevC++ 支持C++17

      模板参数分为两种,一种是类型模板参数,也是我们用得最多的一种:
template
auto add(T t, U u) {
    return t+u;
}
     里面的 T 和 U 都是类型模板参数。

另一种是非类型模板参数,它可以让不同的字面量成为模板的参数:
template
class buffer_t {
public:
    T& alloc();
    void free(T& item);
private:
    T data[BufSize];
}
 
buffer_t buf; // 100 作为模板参数

    我们在编写模板的时候就必须明确非类型模板参数的具体类型,C++17 打破了这一限制,让我们能够在非类型模板参数中使用 auto 关键字,从而让编译器推导具体的类型:
template void foo() {
    return;

foo<10>();

 

一个测试程序;


你可能感兴趣的:(VC++,C++11,C++17,auto,类型模板参数,非类型模板参数)