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 constexprspecificatore implica lo inlinespecificatore nel senso che se un argomento non costante viene passato a una constexprfunzione, il compilatore proverà alla inlinefunzione come se lo inlinespecificatore fosse stato inserito nella sua dichiarazione?
Lo standard C ++ 11 lo garantisce?
inlinespecificatore non ha più nulla a che fare con l' inlining
inlineè direttamente correlato all'inlining. Quindi no, lo constexprspecificatore non implica lo inlinespecificatore in quel senso, poiché quel senso non esiste.
inlinespecificatore. (O forse ho frainteso la tua frase.)