这个答案以一种方式声明模板类备忘录,并以另一种方式实现它的部分专业化。
所以,前向声明是:
template <template <typename...> class Container, typename...> struct Memo;
和部分专业化:
template <typename R, typename... Args, template <typename...> class Container>
struct Memo<Container, R, std::tuple<Args...>>
Container 模板参数与可变参数模板参数切换(希望有人理解我刚刚写的内容)。R 只是包中的第一个元素。
代码编译得很好,所以我想应该有一个简单的解释为什么允许这样做。
那么,为什么允许在模板特化中切换模板参数呢?是因为模板特化是一个独立的类型吗?