繁体   English   中英

专门化模板化类的内部模板

[英]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;
    }

};

…问题在于,无法在类级别定义模板化转换运算符后面的模板专业化(根据我得到的错误)。

我知道需要离线指定特殊化,但是我一生都无法弄清楚语法。 我应该如何宣布该专业化?

只需删除专业化即可。 如果DestColorColor相同,则将永远不会调用您的转换函数。 [class.conv.fct] / P1:

永远不会使用转换函数将(可能具有cv限定)对象转换为(可能具有cv限定)相同对象类型(或对其的引用),转换成该类型(可能具有cv限定)的基类(或对它的引用)或对(可能具有cv资格的) void的引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM