Pertimbangkan fungsi sebaris berikut:
// 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]));
}
dan versi yang setara dengan 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]));
}
Pertanyaan saya adalah: apakah constexprpenspesifikasi menyiratkan inlinepenentu dalam arti bahwa jika argumen non-konstan dilewatkan ke suatu constexprfungsi, kompilator akan mencoba inlinefungsi tersebut seolah-olah inlinepenentu itu dimasukkan ke dalam deklarasinya?
Apakah standar C ++ 11 menjamin itu?
inlinespecifier tidak lagi ada hubungannya dengan sebaris
inlineberhubungan langsung dengan inlining. Jadi tidak ada, yang constexprspecifier tidak berarti inlinespecifier dalam arti bahwa, sebagai yang rasa tidak ada.
inlinepenspesifikasi. (Atau mungkin saya salah memahami ungkapan Anda.)