在什么情况下模板模板参数有用?

时间:2018-08-08 19:04:46

标签: c++ c++14

我看不到模板模板参数曾经有用的情况,只是可以将模板模板参数替换为一个同样可以正常使用的模板参数。参考我的示例:

template<template<typename, typename...> typename Cont, typename T, typename... Args>
void Foo(Cont<T, Args...> container)
{
  for (auto i : container)
    std::cout << i << " ";
  std::cout << std::endl;
}

template<typename T>
void Bar(T container)
{
  for (auto i : container)
    std::cout << i << " ";
  std::cout << std::endl;
}

这些将具有相同的功能,并且Bar将在定义迭代器(不需要分配器)的任何容器上工作。 Foo做同样的事情,但是写起来更加混乱(理解起来也更加混乱)。我不知道是否错过了模板模板参数的要点,但是对我来说,它们似乎毫无用处,因为即使没有其他参数,单个模板参数也会推导类型。

还-我应该对模板模板参数使用typename还是class吗?

template<typename> class T

template<typename> typename T

0 个答案:

没有答案
相关问题