Розглянемо наступну вбудовану функцію:
// 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робить специфікатор. (А може, я неправильно зрозумів вашу фразу.)