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);
}
次のコードは、クラン(アップルLLVMのバージョン7.3.0)用にコンパイルに失敗し、しかし、両方-Wall -Wextra -Werror -pedantic-errors
で、GCC(4.9+)の罰金コンパイル:
constexpr auto x = makeWrapper(123);
クランはと文句を言い"非constexprコンストラクタ 'Wrapper'は定数式では使用できません。"どのコンパイラが正しいのですか?
現時点ではコンパイラはありません。コピーコンストラクタを削除するとどうなりますか? – ZaldronGG
Repro clang3.7とgcc6.1、コピー可能なMCVE [here](http://coliru.stacked-crooked.com/a/d72a2d90f44bb0dc)、両方のコンパイラ用の修正プログラム[here](http://coliru.stacked- crooked.com/a/759e633b484f83a8)。 –
@Baum mit Augenなぜ答えを投稿しませんか? –