c++ Alias使用msvc编译,但被gcc拒绝

gojuced7  于 2023-05-20  发布在  其他
关注(0)|答案(1)|浏览(138)

我已经写了下面的代码(使用typedef),其中compiles与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的另一个bug还是程序格式良好?

f4t66c6m

f4t66c6m1#

给定的程序是病态的,因为如果一个函数类型有引用限定符,那么我们不能按照dcl.ref创建对该函数类型的引用:
[Note 4:**如果函数类型具有cv限定符或ref限定符,则形成对函数类型的引用是病态的;**见[dcl.fct]。- 尾注]
由于type1=int(int)&是一个带有引用限定符的函数类型,我们不能像在type2中那样创建对type1的引用。
因此,这里的 *msvc是错误的 *。

相关问题