对于这个结构:
struct Wrapper {
int value;
constexpr explicit Wrapper(int v) noexcept : value(v) {}
Wrapper(const Wrapper& that) noexcept : value(that.value) {}
};
Run Code Online (Sandbox Code Playgroud)
而这个功能:
constexpr Wrapper makeWrapper(int v)
{
return Wrapper(v);
}
Run Code Online (Sandbox Code Playgroud)
以下代码无法为Clang(Apple LLVM版本7.3.0)编译,但是对于GCC(4.9+)编译良好,两者都具有-Wall -Wextra -Werror -pedantic-errors:
constexpr auto x = makeWrapper(123);
Run Code Online (Sandbox Code Playgroud)
Clang抱怨说"非constexpr构造函数'Wrapper'不能用于常量表达式." 哪个编译器是对的?