模板模板参数背后的C ++基本原理

这不是有关模板模板语法含义的问题,而是有关C ++标准委员会为何选择此语法的问题。让我们举个例子

(1)

template< typename T> 
Class A
{
...
}

上面的是带有单个模板参数的类模板语法的语法。我可以理解,这种语法是c ++委员会可以任意选择的。

(2)

template<template <typename> typename T>
class B
{
...
} 

C ++标准委员会应该使用某种语言标准/语法使用(1)构建(2)语法。我不明白如何使用(1)构建(2)。

如果可以选择的话,我会选择以下内容作为模板模板语法,

(3)

template <typename template< typename T>> //my way of writing syntax (but not recognized by standard)

The inner template<typename T> in above is a template datatype, so a template of that should be written template<typename template<typename T>>

任何人都可以解释为什么语言委员会选择(2)而不是(3)

There is a similar question Syntax of C++ Template Template Parameters which doesn't clarify these

评论