模板非类型形参

今天看c++primer看到16.4.2节内容,非类型形参的模板实参

自己突发奇想非类型形参是否支持类型转换,于是键入double型数据,编译器提示模板形参错误(vs2010,error:表达式必须包含整数或枚举类型).

可见不仅不支持类型转换,更不能允许形参为整型与枚举类型之外的类型。

不见黄河不死心,于是将模板形参修改为double型来测试,发现在使用模板类型时显示声明的形参值还是必须键入整型,且编译不能通过。

编译错误提示:非类型模板参数的类型非法。

咦,枚举?于是想想为枚举成员提供double型数据再设置为模板的形参是什么情况呢,想到就做。

结果在初始化枚举类型成员的时候出错,error:表达式必须为整型常量表达式

翻书到枚举这一章c++primer54页:用来初始化枚举成员的值必须是一个常量表达式。double型数据就不是常量表达式?

刚想到这儿马上看见后面一句话:常量表达式是编译器在编译时就能够计算出结果的整型表达式。

噢,原来如此,暂且自己这样理解:常量表达式就是整型表达式,整型表达式在编译时就能够计算出结果。

这句话的意思不知道是不是意味着double型或其他非整型应该是在程序运行时才能计算出结果。。?

这是一个初学者的理解,如有错误欢迎指出..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值