Considérez la fonction intégrée suivante:
// 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]));
}
et la version équivalente de 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]));
}
Ma question est la suivante: le constexpr
spécificateur implique-t-il le inline
spécificateur dans le sens où si un argument non constant est passé à une constexpr
fonction, le compilateur essaiera inline
la fonction comme si le inline
spécificateur était placé dans sa déclaration?
La norme C ++ 11 garantit-elle cela?
inline
prescripteur n'a plus rien à voir avec l' inlining
inline
est directement liée à l'inlining. Donc non, le constexpr
spécificateur n'implique pas le inline
spécificateur dans ce sens, car ce sens n'existe pas.
inline
spécificateur. (Ou peut-être que j'ai mal compris votre formulation.)