Рассмотрим следующую встроенную функцию:
// 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]));
}
и эквивалентной версии 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]));
}
Мой вопрос: спецификатор constexpr
подразумевает спецификатор inline
в том смысле, что если непостоянный аргумент передается функции constexpr
, компилятор будет пытаться inline
использовать функцию как бы спецификатор inline
был помещен в его объявление?
Гарантирует ли стандарт С++ 11?