gpt4 book ai didi

c++ - 为什么在详细类型说明符中不允许使用 typedef?

转载 作者:行者123 更新时间:2023-12-02 10:38:37 25 4
gpt4 key购买 nike

当我遇到需要使用详细类型说明符的事实时,我想显式实例化模板。

cppreference声明如下:

If the (class-)name refers to a typedef name, a type alias, a template type parameter, or an alias template specialization, the program is ill-formed,...

我想稍微了解一下为什么会这样。(对 typedef 部分特别感兴趣)

编辑:

using MyType = MyTemplate<Many,Parameters>;
template class MyType; // invalid code

来自here我了解到此限制仅适用于 MyType,并且 ManyParameters 可以是 typedef。

最佳答案

标准说:

7.1.6.3 Elaborated type specifiers [dcl.type.elab]: 2) ... If the identifier resolves to a typedef-name or the simple-template-id resolves to an alias template specialization, the elaborated-type-specifier is ill-formed.

因此,标准明确禁止在详细类型说明符中使用 typedef。

至少 typedef 不需要是类、 union 或枚举类型的别名,但它也可以是基本类型的别名,并且对于这种情况没有详细的类型说明符,并且它不会有很有道理。

关于c++ - 为什么在详细类型说明符中不允许使用 typedef?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58745151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com