ネストされたテンプレート クラスの明示的な特殊化の正しい構文を理解しようとしています。次のコードは、よりよく説明します。
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
が、構文がわかりません。包含クラスである Matrix を明示的に特殊化せずに、Iterator クラスを明示的に特殊化することはできないのではないかと思います。しかし、これを行う方法があれば、とてもうれしいです。
Iterator クラスを Matrix クラスのメンバーではなく別のクラスにすることができることはわかっていますが、クラスをネストすることで、Matrix クラスのテンプレート パラメーターとデータメンバーに完全にアクセスできるようになり、作業が簡素化されます。必要に応じてこれを回避できることはわかっていますが、最初にネストされたアプローチの可能性を調査して理解したいと思います。
ありがとう、シュムエル