考虑以下内联函数:
// 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标准是否保证?
inline
说明符不再有任何与内联
inline
是基于与内联直接相关的错误假设。因此,不,constexpr
说明者并不意味着该inline
说明者,因为该意义不存在。
inline
指定者不会执行“ [将编译器尝试内联函数]” 。(或者我可能误解了您的措辞。)