Betrachten Sie die folgende Inline-Funktion:
// 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]));
}
und die constexpr äquivalente Version:
// 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]));
}
Meine Frage ist: constexpr
Bedeutet der Bezeichner den Bezeichner inline
in dem Sinne, dass constexpr
der Compiler , wenn ein nicht konstantes Argument an eine Funktion übergeben wird, versucht, inline
die Funktion so auszuführen, als ob der Bezeichner inline
in seine Deklaration aufgenommen worden wäre?
Garantiert der C ++ 11-Standard dies?
inline
Spezifizierer hat nichts mehr mit Inlining
inline
in direktem Zusammenhang mit Inlining steht. Also nein, der constexpr
Spezifizierer impliziert den inline
Spezifizierer nicht in diesem Sinne, da dieser Sinn nicht existiert.
inline
Spezifizierer tut. (Oder vielleicht habe ich Ihre Formulierung falsch verstanden.)