有人可以用模板参数包解释以下代码。它是如何工作的?在这种情况下,模板参数如何打包?
template<typename Test, template<typename...> class Ref> //#6 struct is_specialization : std::false_type {}; template<template<typename...> class Ref, typename... Args> //#7 struct is_specialization<Ref<Args...>, Ref>: std::true_type {};
可能的要求用法(受Function Template Overloading or Specialization for inner template type std::vector<std::vector<T>>启发)
template <typename T>
bool f(T& x) // #1
{
std::cout << "body of f\n";
return f(x);
}
template <typename T>
bool f(std::vector<T>& v) // #2
{
std::cout << "body of f for vectors\n";
return true;
}
template<typename T>
typename std::enable_if<
is_specialization<typename T::value, std::vector>::value, T>::type
bool f(std::vector<T>& v) // #5
{
std::cout << "body of f for vectors<vectors>\n";
return true;
}
int main() {
std::vector<int> v{1,2}
f(v);
}
有人可以用模板参数包解释以下代码。它是如何工作的?在这种情况下,如何解压缩模板参数:template
以下是有关[[variadic模板