最佳答案
考虑以下内联函数:
// 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
函数,就好像在它的声明中放入了 inline
参数一样,constexpr
参数是否意味着 inline
参数?
C + + 11标准能保证这一点吗?