Я пытаюсь выяснить правильный синтаксис для явной специализации вложенного шаблона. Следующий код лучше иллюстрирует:
struct Column_Major;
struct Row_Major;
template<size_t rows, size_t cols, typename T, typename Allocator>
class Matrix
{
/* bunch of members */
template <typename storage = Column_Major>
class Iterator
{
/* bunch of members */
};
};
Я хотел бы написать явную специализацию для template <> class Matrix<...>::Iterator<Row_Major
, но синтаксис ускользает от меня. У меня есть подозрение, что нельзя явно специализировать класс Iterator без явной специализации содержащего класса Matrix. Но я был бы очень рад, если есть способ сделать это.
Я знаю, что я мог бы сделать класс Iterator отдельным классом, а не членом класса Matrix, но наличие вложенных в него классов позволяет мне получить полный доступ к параметрам шаблона и datamebers класса Matrix, что упрощает работу. Я знаю, что могу обойти это, если нужно, но сначала хотел бы изучить и понять возможности для вложенного подхода.
Спасибо, Шмуэль