2 qq 33555452 qq_33555452 于 2016.01.21 12:33 提问

static 与 constexpr作用
c++

不知道为什么这个会错 static constexpr vector(double)vec1(vecsize)括号里是数字同样错,还有就是没搞懂为什么第一个static const double rate=6.5会错然而 第二个static const int vecsize=26确没有错图片

3个回答

John_ToStr
John_ToStr   Rxr 2016.01.21 18:13
已采纳

不是的,只有vs12版本以上的编译器支持const static 类型名 变量名 = 变量; 也就是说,可以不在类外初始化。
但是这个变量只能为int 类型或者枚举类型, float类型是不允许的,因为他在内存中的存储形式比较复杂,编译器处理效率比较低。

enpterexpress
enpterexpress   Rxr 2016.01.21 12:37
oyljerry
oyljerry   Ds   Rxr 2016.01.21 15:04

换一下编译器,是否为VS2015最新等,需要编译器支持充分

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
c++11新特性----constexpr (编译时常量)
常量表达式的值需要在编译时确定。只有字面值类型(Literal type)能被定义为constexpr。 尽管指针和引用能把定义成constexpr,但他们的初始化值要求很严。一个constexpr指针的初始值必须是nullptr/0或者是存储于某个固定地址中的对象。 函数体内定义的变量,一般来说没有固定地址,所以constexpr指针不能只想这样的变量。相反,所有定义在函数体之外的对象,地址
C++ 0x 即将夭折的新关键字 constexpr 为 VS 2010 拒绝
文 / 李博 (光宇广贞)const 关键字的缺陷及 constexpr 关键字的产生       话说现行标准 C++ 98/03 对于常表达式(Constant Expression)的界定过于严格。C++ 09 新标准由 Bjarne Stroustrup 等人提案(N2116)“普通化常表达式(Generalized Constant Expression)”和 constex
C++ 静态成员的类内初始化
C++ 静态成员的类内初始化//example.h #include<iostream> #include<vector> using namespace std;class Example{ public: static double rate = 6.5; static const int vecSize = 20; static vector<double> vec(v
C++14尝鲜:constexpr函数(编译期函数)
constexpr函数
常量表达式与const和constexpr
是不是带const的都是常量表达式? 是不是不带const的都不是常量表达式? 1、    常量表达式(const expression)是指值不会改变且在编译过程中就能够得到计算结果的表达式。 const int max_files=10;                  //max_files是常量表达式。 const int limits=max_files+20;      //
C++17 std::in_place_type, std::in_place_index_t, std::in_place_type_t 这些的用法
C++17 标准提供了三个新东西, std::optional, std::variant, std::any 概念和使用方法都挺简单的。 可以参考cppreference等各大网页。 但是如果点开看的话,会发现有几个构造函数有点奇怪,用到了 std::in_place, std::in_place_type, std::in_place_index,
C++11 constexpr简单用法
关键字 constexpr 是C++11中引入的关键字,允许将变量声明为constexpr类型让编译器来验证变量的值是否是一个常量表达式。 声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化: constexpr int mf = 0; // 0 是常量表达式 constexpr int limit = mf + 1; // mf + 1 是常量表达式 constexp
Effective Modern C++ 条款15 尽可能使用constexpr
Effective Modern C++ 条款15
关于constexpr与const
C++之父是这样解释二者的: const:大致意思是说我承诺不改变这个值,主要用于说明接口,这样变量传递给函数就不担心变量会在函数内被修改了编译器负责确认并执行const的承诺。 constexpr:大致意思是在编译时求值,主要用于说明常量,作用是允许数据置于只读内存以及提升性能。 按照这种说法,我的理解是const大多用于接口中,声明不对传入的参数做修改,而constexpr多用于编译
C++ constexpr类型说明符
关键字 constexpr 于 C++11 中引入并于 C++14 中得到改善。它表示常数表达式。