为什么不允许使用此语法:
@classonlymethod
def as_view(cls, **initkwargs):
...
def view(request, *args, **kwargs):
# See: view cls is only instantiated when 'view' is called
self = cls(**initkwargs)
...
return self.dispatch(request, *args, **kwargs)
...
return view
我们必须这样做:
template<float&& value>
struct MyStruct{
float GetValue() { return value; }
};
MyStruct<12.1f> myFloat;
我认为没有理由禁止第一个 第一种语法不那么笨重,第二种语法只是让它看起来像是c ++的创造者只是想让事情变得困难......那么为什么会这样呢?
答案 0 :(得分:0)
由于模板处理非常复杂,我认为设计师正确地拒绝了可以使用其他方法轻松完成的功能。存在模板参数来自定义代码的行为,而不仅仅是插入常量。这就是支持int模板参数的原因,因此您可以执行以下操作:
template <int SIZE> struct X {
char buffer[SIZE];
};
如果您只想在类的实例中使用常量,请将其添加到构造函数中:
class X {
public:
X(float value_) {
value = value_;
}
float value;
};
如果你真的想要一个使用该常量的自定义类,那么:
class X71 : public X {
public:
X71() : X(7.1f) {}
};