c++ - 关于constexpr函数的一个问题
本文介绍了c++ - 关于constexpr函数的一个问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
先看代码
#include <iostream>
#include <cstdlib>
#include <cstdio>
//#include "test.h"
using namespace std;
constexpr int screen(int x)
{
return x;
}
int main()
{
int x = 0;
int z = screen(x);
cout << z<<endl;
return 0;
}
在C++ Primer一书中说到constexpr函数定义的约定:函数的返回类型以及所有的形参类型必须是字面值类型(即编译过程就能得到结果的类型)。但是同时又说constexpr函数不一定返回常量表达式。感觉前后有一些矛盾,就像上面的代码一样,通过 g++ test.cpp -std=c00x
的编译运行都是没有问题的,这里应该怎么理解?
解决方案
看看这个:A constexpr function is not required to return a constant expression?
这篇关于c++ - 关于constexpr函数的一个问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文