テンプレート化されたクラス内にテンプレート化されたクラスがあります。メンバー関数をインラインで簡単に実装できますが、特定のケースでは、前方宣言の問題が発生しているため、宣言の後に実装する必要があり、その方法を忘れていたことに気付きました。
この小さな例を (定義をインラインに移動せずに) コンパイルできる場合、私の質問は次のように答えられます。
#include <iostream>
template <typename T, typename V>
struct Outer {
template <int Count>
struct Inner {
void printer() const;
};
};
template <typename T, typename V, int Count>
inline void Outer<T, V>::Inner<Count>::printer() const {
std::cout << "Oh hai. I'm inner<" << Count << ">" << std::endl;
}
int main() {
Outer<int, int>::Inner<3> i;
i.printer();
return 0;
}
編集:Stuartが修正した無関係なタイプミスを修正しました(答えをより明確にするのに役立ちます)