做网站有哪些平台,微信小程序平台设计,wordpress能不能导入html,网站如何解除绑定域名constexpr 函数 — C 20
constexpr double pi 3.14;constexpr允许你在编译时使用典型的C函数语法进行编程,但这并不意味之constexpr只和编译期有关
constexpr函数可以在编译期运行,也可以在运行时运行
但在以下情况constexpr函数必须在编译期运行:
constexpr函数在编译的上…constexpr 函数 — C 20
constexpr double pi 3.14;constexpr允许你在编译时使用典型的C函数语法进行编程,但这并不意味之constexpr只和编译期有关
constexpr函数可以在编译期运行,也可以在运行时运行
但在以下情况constexpr函数必须在编译期运行:
constexpr函数在编译的上下文中需要,比如数组初始化,类型萃取库,断言表达式constexpr函数的值被constexpr的值需要,比如constexpr int a func();
与模板元编程相似 模板元程序一定在编译期运行,但是constexpr函数可以在编译期或运行时运行模板元程序的参数可以使类型,非类型,模板编译期是没有状态的,这意味着模板元程序是纯粹的函数式风格 在模板元程序中,不会修改值,只会在每次返回值在编译期,实现一个循环所需要的可变变量是不可能实现的,所有的循环都依赖递归在模板元程序中,条件执行都被模板的特化取代
对比
constexpr参数与模板元函数的参数对比 constexpr函数可以有可变的变量并修改,但是模板元函数无 模板元函数使用递归模拟循环 模板元函数使用专门化或者模板结束循环 模板元函数不会修改变量,而是在每次递归中返回一个新值 模板元函数没有返回值,直接使用值作为返回值 实例化
template typename T
bool isSmaller(T fir, T sec)
{return fir sec;
}int main(int argc, char* argv[])
{isSmaller(5, 10); // (1)std::unordered_setint set1;std::unordered_setint set2;isSmaller(set1, set2); // (2)
}
检查模板语法,通常由编译器完成为每个不同类型的模板参数实例化一个模板函数,第二个函数会失败,因为std::unordered_setint不支持
constexpr与此相似 什么是函数式编程思维 - 用心阁的回答 - 知乎 https://www.zhihu.com/question/28292740/answer/40336090
么是函数式编程思维 - 用心阁的回答 - 知乎 https://www.zhihu.com/question/28292740/answer/40336090