C++11 constexpr函数

  constexpr函数是指能用于常量表达式的函数,定义constexpr的方式和其他函数的定义方式一样,但存在下面两个约束:

  1、函数的返回值必须为字面值常量;

  2、函数体中必须且只有一个return语句;

constexpr int new_sz(){return 42;}

constexpr函数时被隐式地指定为内联函数的

  constexpr函数体内也可以有其他的语句,只要运行时不执行任何操作即可,比如空语句,类型别名,using声明;我们允许constexpr函数的返回值并非一个常量:

constexpr size_t scale(size_t cnt){ return new_sz()*cnt; }

当scale的形参cnt为常量表达式时,其返回值也为常量表达式,如果cnt传入的是一个类型为size_t的变量a,那么其返回值就不是常量表达式。

  和其他函数不一样的是,内联函数和constexpr函数可以在程序中多次定义, 不过某个给定的内敛函数或者constexpor函数来说,其定义必须是一致的,这样我们尽量要将内联函数和

constexpr函数通常定义在头文件中。

原文地址:https://www.cnblogs.com/chmm/p/7451836.html