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 constexpr
penspesifikasi menyiratkan inline
penentu dalam arti bahwa jika argumen non-konstan dilewatkan ke suatu constexpr
fungsi, kompilator akan mencoba inline
fungsi tersebut seolah-olah inline
penentu itu dimasukkan ke dalam deklarasinya?
Apakah standar C ++ 11 menjamin itu?
inline
specifier tidak lagi ada hubungannya dengan sebaris
inline
berhubungan langsung dengan inlining. Jadi tidak ada, yang constexpr
specifier tidak berarti inline
specifier dalam arti bahwa, sebagai yang rasa tidak ada.
inline
penspesifikasi. (Atau mungkin saya salah memahami ungkapan Anda.)