クラステンプレートがあります:
template< typename ...bounded_types >
struct variant {};
しかし、制限された型の空のリストを禁止したい、つまりvariant<>
、コンパイル時に禁止する必要があります。私は次のことができます:
template<>
struct variant<>;
しかし、あまり明確ではありません: 私のバリアントライブラリに多くのヘッダーが含まれている場合、上記の特殊化がクラスの前方宣言ではないかどうかは明らかではありません。私の考えでは、理想的な想像上の解決策は次のとおりです。
template<>
struct variant<> = delete;
これはかなり明示的に見えますが、悲しいことに、C++ 構文では禁止されています。
説明されている意図を満たす最も明確な方法は何ですか?