1
我有一个由两个模板定义的类。定义从模板类到基于其他模板的原始类型的隐式转换
template<typename A, typename B> my_class {
private:
A value;
public:
operator A() {
return this->value;
}
};
我想定义模板中类和第一种类型之间的隐式转换,但仅限于模板上特定的第二种类型。由于A
是C++基元类型,因此我无法在该端定义转换。我试图std::enable_if
这样
operator typename std::enable_if<std::is_same<B, specific_B_type>::value, NumT>::type() {
return this->value;
}
,但我得到的编译错误
Error C2833 'operator type' is not a recognized operator or type dimensional_analysis
有没有办法做到这一点,而不必定义专门用于B = specific_B_type
整个班级?
不幸的是,我刚刚发现我的答案实际上并没有工作......看起来,这会禁用整个类实例化,而不仅仅是操作符......你能不接受它,所以我可以删除它吗? :) – Knoep
好的,发现另一个(更简单)的解决方案。这仍然是你想要的吗? – Knoep
我目前正在使用你给出的第一个解决方案'template :: value,void> :: type>'。它似乎工作,但我可能没有足够彻底的测试。你最好的解决方案是什么?提前致谢! –
mbtg