Розглянемо наступну вбудовану функцію:
// 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
специфікатор був введений у свою декларацію?
Чи гарантує це стандарт C ++ 11?
inline
більше не має нічого спільного з вбудовою
inline
безпосередньо пов’язане з вбудовою. Отже, ні, constexpr
специфікатор не має на увазі inline
специфікатора в цьому сенсі, оскільки цього сенсу не існує.
inline
робить специфікатор. (А може, я неправильно зрозумів вашу фразу.)