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 constexpr
especificador implica el inline
especificador en el sentido de que si se pasa un argumento no constante a una constexpr
función, el compilador intentará inline
la función como si el inline
especificador se pusiera en su declaración?
¿El estándar C ++ 11 garantiza eso?
inline
especificador ya no tiene nada que ver con el inlining
inline
está directamente relacionada con el inlining. Entonces no, el constexpr
especificador no implica el inline
especificador en ese sentido, ya que ese sentido no existe.
inline
especificador. (O tal vez entendí mal tu fraseo.)