小编o.s*_*son的帖子

constexpr数组成员是否编译时间常数?

是代码片段

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++ c++11

18
推荐指数
1
解决办法
3074
查看次数

C++:默认初始化模板函数中的整数类型

出于教育目的,我正在使用自己的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.0Vector<double>)?我试过T t();但g ++告诉我,例如,"double(*)()"在return语句中不能转换为"const double",并且operator+=()不会为"(double(),double)"定义.

非常感谢你!

c++ templates

9
推荐指数
1
解决办法
790
查看次数

标签 统计

c++ ×2

c++11 ×1

templates ×1