模板模板可变参数包

问题描述 投票:0回答:1

有人可以用模板参数包解释以下代码。它是如何工作的?在这种情况下,模板参数如何打包?

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

c++ variadic-templates template-specialization parameter-pack
1个回答
1
投票

以下是有关[[variadic模板

© www.soinside.com 2019 - 2024. All rights reserved.