Итак, у меня есть шаблонный класс 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;
}
};
... проблема в том, что специализация шаблона, который следует оператор преобразования шаблонных не может быть определена на уровне класса (в соответствии с ошибками я получаю).
Получаю, что нужно указать специализацию вне очереди, но я не могу на всю жизнь понять синтаксис. Как объявить эту специализацию?
Если я не ошибаюсь, вы не можете объявить полную специализацию класса шаблонов внутри класса, добавив параметр шаблона шаблона dummy по умолчанию, чтобы void мог решить проблему, если это вас не беспокоит. – Caninonos
Ага, как бы это было похоже, если я могу спросить? – fish2000
Это было бы похоже на [this] (http://ideone.com/Udekt9) (Edit: вы также можете сделать его приватным и объявить публичную структуру с псевдонимом/шаблоном, чтобы скрыть этот параметр фиктивного файла, если он вас беспокоит, t есть лучший способ) – Caninonos