Для этой структуры:
struct Wrapper {
int value;
constexpr explicit Wrapper(int v) noexcept : value(v) {}
Wrapper(const Wrapper& that) noexcept : value(that.value) {}
};
И эта функция:
constexpr Wrapper makeWrapper(int v)
{
return Wrapper(v);
}
Следующий код не удается скомпилировать для Clang (Apple LLVM версии 7.3.0), но компилируется для GCC (4.9+), как с -Wall -Wextra -Werror -pedantic-errors
:
constexpr auto x = makeWrapper(123);
Clang жалуется, что "конструктор" не-constexpr "Wrapper" не может использоваться в постоянном выражении". Какой компилятор прав?