構築できない型を作りたいとしましょう (理由は聞かないでください)。
struct Impossible
{
私はこのようにすることができます:
Impossible() = delete;
// disable automatically generated constructors, don't declare any others
Impossible(const Impossible&) = delete;
// I suppose this is redundant with nothing to copy
またはこのように:
Impossible(...) = delete;
// explicitly disable all constructors
またはこのように:
template<typename... Ts>
Impossible(Ts...) = delete;
// explicitly disable all constructors, template version
};
コンストラクタだけでなく、どの関数についても同じことを尋ねることができると思います。
どちらを選択しても違いはありますか? 構文に関しては、2 番目のオプションが気に入っていると思います。しかし、エラーメッセージのテキスト以外で違いを検出できる状況はありますか?