[英]Specializing inner template of templated class
因此,我有一个模板化的Image类,我正在尝试为其设置内联颜色转换。 这是令我烦恼的代码的简化:
template <typename Color = colors::RGB>
class Image {
/// ...
template <typename DestColor>
operator Image<DestColor>() {
/// when assigning with a different colorspace:
/// ... do the color conversion
/// ... and return a fresh Image<DestColor>
}
template <>
operator Image<Color>() {
/// when assigning with the same colorspace:
return *this;
}
};
…问题在于,无法在类级别定义模板化转换运算符后面的模板专业化(根据我得到的错误)。
我知道需要离线指定特殊化,但是我一生都无法弄清楚语法。 我应该如何宣布该专业化?
只需删除专业化即可。 如果DestColor
与Color
相同,则将永远不会调用您的转换函数。 [class.conv.fct] / P1:
永远不会使用转换函数将(可能具有cv限定)对象转换为(可能具有cv限定)相同对象类型(或对其的引用),转换成该类型(可能具有cv限定)的基类(或对它的引用)或对(可能具有cv资格的)
void
的引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.