Considere la siguiente función en línea:
// 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]));
}
y la versión equivalente 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]));
}
Mi pregunta es: ¿el constexprespecificador implica el inlineespecificador en el sentido de que si se pasa un argumento no constante a una constexprfunción, el compilador intentará inlinela función como si el inlineespecificador se pusiera en su declaración?
¿El estándar C ++ 11 garantiza eso?
inlineespecificador ya no tiene nada que ver con el inlining
inlineestá directamente relacionada con el inlining. Entonces no, el constexprespecificador no implica el inlineespecificador en ese sentido, ya que ese sentido no existe.
inlineespecificador. (O tal vez entendí mal tu fraseo.)