非类名C++ 11类型名称是一个简单的模板ID?

And*_*zos 4 c++ templates c++11

在C++ 11标准它描述type-nameclass-name具有以下语法:

type-name:
    class-name
    enum-name
    typedef-name
    simple-template-id        <--- HERE

class-name:
    identifier
    simple-template-id
Run Code Online (Sandbox Code Playgroud)

我的问题是关于simple-template-id那是直系后裔type-name.

是否有可能拥有simple-template-id一个type-name但不是一个class-name

例如,如果foo<bar>名称是一个类型,它可以是非类型吗?

(如果答案是否定的,是否有其他原因我错过了为什么simple-template-id重复type-name?)

Vau*_*ato 5

有可能,例如:

template <typename T> using Ptr = T *;

Ptr<int> p = 0;
Run Code Online (Sandbox Code Playgroud)