この答えは、テンプレートクラスメモを1つの方法で前方宣言し、別の方法で部分的な特殊化を実装しました。
したがって、前方宣言は次のとおりです。
template <template <typename...> class Container, typename...> struct Memo;
部分的な特殊化 this :
template <typename R, typename... Args, template <typename...> class Container>
struct Memo<Container, R, std::tuple<Args...>>
Container テンプレート引数は、可変引数テンプレート引数で切り替えられます (誰かが私が今書いたことを理解してくれることを願っています)。R はパックの最初の要素です。
コードは正常にコンパイルされるので、なぜそれが許可されているのかを簡単に説明する必要があると思います。
では、なぜテンプレートの特殊化でテンプレート引数を切り替えることができるのでしょうか? テンプレート特化が独立型だからでしょうか。