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

13785 0
Honkers 2025-12-16 20:34:10 | 显示全部楼层 |阅读模式

      模板参数分为两种,一种是类型模板参数,也是我们用得最多的一种:
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>();

 

一个测试程序;

[code][/code]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行