我有一个类模板:
template< typename ...bounded_types >
struct variant {};
但是要禁止有界类型的空列表,即variant<>
必须在编译时禁止。我可以执行以下操作:
template<>
struct variant<>;
但不太清楚:如果我的变体库包含大量的头文件,那么上面的特化是否不是一个类的前向声明,在下面的某个地方定义,就不清楚了。在我看来,理想的想象解决方案将是:
template<>
struct variant<> = delete;
这在更大程度上看起来很明确,但可悲的是,反过来又被 C++ 语法所禁止。
满足所描述意图的最明确方式是什么?