Не таких подразумевает встроенный?


рассмотрим следующую встроенную функцию:

// 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 спецификатор в том смысле, что если непостоянный аргумент передается в

1 59

1 ответ:

да ([dcl.constexpr], §7.1.5 / 2 в стандарте C++11): "функции constexpr и конструкторы constexpr неявно встроены (7.1.2)."

обратите внимание, однако, что inline описатель действительно очень мало (если таковые имеются) влияет на то, может ли компилятор расширить встроенную функцию или нет. Однако это влияет на одно правило определения, и с этой точки зрения компилятор должен следовать тем же правилам для A