Considera la seguente funzione inline:
// 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]));
}
e la versione equivalente di 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]));
}
La mia domanda è: lo constexpr
specificatore implica lo inline
specificatore nel senso che se un argomento non costante viene passato a una constexpr
funzione, il compilatore proverà alla inline
funzione come se lo inline
specificatore fosse stato inserito nella sua dichiarazione?
Lo standard C ++ 11 lo garantisce?
inline
specificatore non ha più nulla a che fare con l' inlining
inline
è direttamente correlato all'inlining. Quindi no, lo constexpr
specificatore non implica lo inline
specificatore in quel senso, poiché quel senso non esiste.
inline
specificatore. (O forse ho frainteso la tua frase.)