constexpr

作者: tianxinheihei | 来源:发表于2016-06-05 20:26 被阅读0次

常量表达式是指值不会改变并且在编译过程就能是到计算结果的表达式。
一个对象是不是常量表达式由它的数据类型和初始值共同决定

int fun(){return 32;}
int main(int argc, char* argv[]) {
const int max_files = 20;
const int limit = max_files + 1;
constexpr int cexp_m = max_files + 1;
int i=0;
cout << "input i:" << endl;
cin >> i;
const int ci = i+1;
cout << "ci:" << ci <<endl;
constexpr int cei = ci+1;
//constexpr int cei = fun();
return 0;
}

上例中,max_files, limit, cexp_m都是常量表达式,但cei会编译出错,原因是因为ci并不是常量表达式,const对象不代表为constexpr
C++11允许将变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。
声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化
用普通函数初始化会报编译错误;但可以用constexpr函数去初始化constexpr变量

constexpr函数的返回值可以不是常量,但返回值必须为常量表达式

相关文章

  • constexpr:编译期与运行期之间的神秘关键词

    参考大神博客,整理constexpr的用法和注意事项 一、概念,constexpr objects C++ pri...

  • constexpr

    常量表达式是指值不会改变并且在编译过程就能是到计算结果的表达式。一个对象是不是常量表达式由它的数据类型和初始值共同...

  • C++ constexpr

    c++ constexpr构造函数有什么作用 给构筑bai函数加上constexpr之后, 这个构筑函数就只能du...

  • cpp constexpr

    cpp 的运行时容器,函数库有stl, constexpr库可以考虑 Sprout ,https://github...

  • 002 constexpr

    C++ 11 新标准规定,允许将变量声明为 constexpr 类型以便由编译器来验证变量的值是否是一个常量表达式...

  • C++11/14/17

    关键字:auto, nullptr, explicit, final, override, constexpr,...

  • C++11/14 constexpr 用法

    constexpr是C++11开始提出的关键字,其意义与14版本有一些区别。C++11中的constexpr指定的...

  • 顺序表的基本操作

    #include"SqList.h" #include"pch.h" #include constexpr aut...

  • C++14

    Lambda 函数constexpr类型推导二进制常量变量模板

  • 2018-05-06

    auto 模板别名 收缩转换 constexpr inline lambda表达式 初级 高级 函...

网友评论

      本文标题:constexpr

      本文链接:https://www.haomeiwen.com/subject/jzjrdttx.html