是代码片段
struct Parameters {
static constexpr int n = 2;
static constexpr double v[n] = {4.0, 5.0};
};
Run Code Online (Sandbox Code Playgroud)
合法的C++ 11?并且,如果是这样,是Parameters::v[0]和Parameters::v[1]编译时间常量或只是指针Parameters::v本身a constexpr(无论在编译时意味着什么)?
正如您所看到的,我通常对constexpr数组及其在类/结构中的初始化感到困惑.请随时回答我的具体问题,并提及有关此主题的常见陷阱等.
出于教育目的,我正在使用自己的C++数字向量模板类.我希望能够为两个向量的点积写(v,w),因此重载operator,()如下:
template<class T>
const T Vector<T>::operator,(const Vector<T>& v) const
{
assertEqualSize(v);
T t;
for(size_t i=0; i<numElements; i++) {
t += elements[i] * v[i];
}
return t;
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:如何正确初始化t一个合理的值(例如0.0为Vector<double>)?我试过T t();但g ++告诉我,例如,"double(*)()"在return语句中不能转换为"const double",并且operator+=()不会为"(double(),double)"定义.
非常感谢你!