For this struct:
struct Wrapper {
int value;
constexpr explicit Wrapper(int v) noexcept : value(v) {}
Wrapper(const Wrapper& that) noexcept : value(that.value) {}
};
And this function:
constexpr Wrapper makeWrapper(int v)
{
return Wrapper(v);
}
The following code fails to compile for Clang (Apple LLVM version 7.3.0), but compiles fine for GCC (4.9+), both with -Wall -Wextra -Werror -pedantic-errors
:
constexpr auto x = makeWrapper(123);
Clang complains that "non-constexpr constructor 'Wrapper' cannot be used in a constant expression." Which compiler is right?
Aucun commentaire:
Enregistrer un commentaire