【发布时间】:2016-06-04 15:29:54
【问题描述】:
为什么不允许使用这种语法:
template<float&& value>
struct MyStruct{
float GetValue() { return value; }
};
MyStruct<12.1f> myFloat;
而我们必须这样做:
template<const float& value>
struct MyStruct{
float GetValue() { return value; }
};
extern constexpr float param = 12.1f;
MyStruct<param> myFloat;
我看不出有什么理由应该禁止第一个。
第一种语法不那么笨重,而第二种语法只是让 c++ 的创建者看起来只是想让事情变得困难......那么为什么会这样呢?
【问题讨论】:
-
因为没有人为此功能写过提案?
-
那个怪物需要被破坏。并且相得益彰。我怀疑通过委员会获得
template<float> class X;会比那些东西更容易。
标签: c++ templates rvalue-reference non-type