加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 模板中的默认参数

发布时间:2020-12-16 09:27:51 所属栏目:百科 来源:网络整理
导读:有可能有这样的事情: templateclass T = unsigned = 64class X{}; 这基本上说如果没有指定任何东西,那么unsigned应该是类型,它的值应该是64. 解决方法 从字面上看,它没有意义.解释你想先做什么. C中的模板有三种参数:1)类型参数,2)值(非类型)参数,3)模板参
有可能有这样的事情:

template<class T = unsigned = 64>
class X
{
};

这基本上说如果没有指定任何东西,那么unsigned应该是类型,它的值应该是64.

解决方法

从字面上看,它没有意义.解释你想先做什么.

C中的模板有三种参数:1)类型参数,2)值(非类型)参数,3)模板参数.

将参数声明为类T时,它是一个类型参数(第一种).它的“价值”实际上是一种类型.例如,无符号.即T的“值”是无符号的.在X类模板的实例化中,unsigned将替换为T而不是T.参数T不能有任何数值,如64.

然而,你似乎试图在第1类和第2类参数之间创建某种混合.首先,这是不可能的.其次,没有办法弄清楚它可能具有的语义含义.请澄清你的意图.

如果要传递数值,则必须创建第二种模板参数:值参数,如

template <unsigned N = 64>
class X {
};

因此,您需要首先确定您真正需要的模板参数类型:类型参数或值参数.或者两者都有.您没有提供有关您的X类的任何详细信息,因此无法猜测您要执行的操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读