gpt4 book ai didi

vc++ 和 clang 中的 c++ typename

转载 作者:搜寻专家 更新时间:2023-10-31 02:06:51 24 4
gpt4 key购买 nike

以下代码:

template<typename T>
struct A{
using TT = typename T;

};

vc++没问题。 clang 输出:错误:之后需要一个合格的名称'typename' 使用 TT = typename T; .

如果你改变

using TT = typename T; 

using TT = T; 

,vc++和clang都可以。

为什么?

最佳答案

您的代码是不正确的 C++。 C++ 语法指定关键字 typename(除了它用于声明模板参数的其他用途之外)只能用在 qualified-id 的开头,这是一个名称至少包含一个 :: token 。

显然 MSVC 在这里允许使用更慷慨的语法。

(typename 必须 在模板中的大多数上下文中使用,只要 qualified-id 是一个从属名称,它应该是一个类型,而不是变量或模板。这里的“依赖名称”大致意味着编译器不能确定找到它的声明,因为依赖于模板参数。但是在 qualified-id 不依赖,或者根本不在模板中。)

关于vc++ 和 clang 中的 c++ typename,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49621393/

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