C++ 为什么可以';你不能在C&x2B中定义新类型吗+;模板参数?
我正在创建一个库,以允许类似于OCaml/Haskell的代数数据类型和模式匹配。代数数据类型使用类似于的类实现。我希望能够在模板参数中定义新的类型(构造函数),但我得到了一个错误。我使用我自己的类型和可变模板,但为了简单起见,我将在这里使用Boost的C++ 为什么可以';你不能在C&x2B中定义新类型吗+;模板参数?,c++,templates,C++,Templates,我正在创建一个库,以允许类似于OCaml/Haskell的代数数据类型和模式匹配。代数数据类型使用类似于的类实现。我希望能够在模板参数中定义新的类型(构造函数),但我得到了一个错误。我使用我自己的类型和可变模板,但为了简单起见,我将在这里使用Boost的variant。为什么不是这样的: typedef variant < class Foo { ... }, class Bar { ... } > Baz; 在这里,我定义了一个新类型Foo,以及一个Foo类型的变
variant
。为什么不是这样的:
typedef variant <
class Foo { ... },
class Bar { ... }
> Baz;
在这里,我定义了一个新类型
Foo
,以及一个Foo
类型的变量bar
。如果这样的事情是允许的,为什么它不能与模板一起工作?除了它不在那里,我想没有人建议添加它,或者如果有,没有足够的支持之外,真的没有其他原因
如果你想继续,我建议从标准委员会开始
我想这是因为模板参数的处理方式与函数参数类似,您不能声明
void func( class A{} a, class B{} b );
要么。我还认为,如果您需要多个模板(typedef)中的类,那么就不可能遵守规则。我认为即将推出的类非常接近,尽管与您描述的不完全相同。这与此无关。
void func( class A{} a, class B{} b );