Alias 使用 msvc 编译但被 gcc 拒绝

问题描述 投票:0回答:1

我已经编写了以下代码(使用 typedef),它使用 Microsoft Visual Studio 进行编译,但不能使用 gcc 和 clang 进行编译。

using type = int(int)&; 
using type2 = type&;   //compiles with msvc but rejcted in gcc and clang 

Gcc 说

cannot declare reference to qualified reference type
但 msvc 接受它。

这是 msvc 的另一个错误还是程序格式正确?

c++ language-lawyer alias
1个回答
1
投票

给定的程序是病态的,因为如果一个函数类型有引用限定符,那么我们不能按照 dcl.ref:

创建对该函数类型的引用

[注 4:如果函数类型具有 cv 限定符或 ref 限定符,则形成对函数类型的引用是格式错误的; 参见 [dcl.fct]。 ——尾注]


并且由于

type1=int(int)&
是具有引用限定符的函数类型,我们无法像您在
type1
中尝试的那样创建对
type2
的引用。

因此,msvc在这里是错误的

© www.soinside.com 2019 - 2024. All rights reserved.