考虑下面的内联函数:
// Inline specifier version
#include<iostream>
#include<cstdlib>
inline int f(const int x);
inline int f(const int x)
{
return 2*x;
}
int main(int argc, char* argv[])
{
return f(std::atoi(argv[1]));
}
constexpr等效版本:
// Constexpr specifier version
#include<iostream>
#include<cstdlib>
constexpr int f(const int x);
constexpr int f(const int x)
{
return 2*x;
}
int main(int argc, char* argv[])
{
return f(std::atoi(argv[1]));
}
我的问题是:constexpr
指定符是否隐含了inline
说明符,如果将非常量参数传递给constexpr
函数,编译器会尝试使用inline
函数,就好像说明inline
符被放入其声明中一样?
C ++ 11标准是否可以保证?
发布于 2018-05-15 12:18:46
是(§7.1.5/ 2):“constexpr函数和constexpr构造函数隐式内联(7.1.2)”。
https://stackoverflow.com/questions/-100004080
复制相似问题