다음 인라인 함수를 고려하십시오.
// 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
지정자가 하는 일이 아닙니다 . (아니면 내가 당신의 말씨를 오해.)