次のインライン関数について考えてみます。
// 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
指定子が行うことではありません。(または、私はあなたの言い回しを誤解したかもしれません。)