【发布时间】:2020-05-15 11:32:19
【问题描述】:
我最近问了一个关于在编译时确定迭代器是否指向复杂值的问题,并得到了有效的答案。
问题在这里: How can I specialize an algorithm for iterators that point to complex values?
解决方案是使用一组模板来确定一个模板是否是另一个模板的特化:
template <class T, template <class...> class Template>
struct is_specialization : std::false_type {};
template <template <class...> class Template, class... Args>
struct is_specialization<Template<Args...>, Template> : std::true_type {};
这确实有效,但我真的很难理解它是如何工作的。特别是template 中的嵌套template 让我感到困惑。我对使用可变参数模板还是很陌生,拥有一个没有提供类型的可变参数模板似乎很奇怪,例如:<class...> 而不是像 <class... Args> 这样的东西。
有人可以分解这个模板并描述它是如何解决的吗?
【问题讨论】:
-
请每个问题回答一个问题。第一次见这里:stackoverflow.com/questions/213761/…
-
@foreknownas_463035818 我已经阅读了该帖子中的答案,但似乎没有一个清楚地描述它是如何工作的。他们确实展示了一些用例,但在不知道它是如何工作的情况下,没有一个用例对我来说真正有意义。
标签: c++ templates variadic-templates template-meta-programming template-templates