gpt4 book ai didi

c++ - cast 运算符函数在 g++ 中编译良好,但在其他编译器中则不然。为什么?

转载 作者:可可西里 更新时间:2023-11-01 16:06:22 26 4
gpt4 key购买 nike

<分区>

考虑以下程序:

struct S {
using T = float;
operator T() { return 9.9f; }
};
int main() {
S m;
S::T t = m;
t = m.operator T(); // Is this correct ?
}

程序在 g++ 中编译良好(参见现场演示 here)

但它在 clang++、MSVC++ 和 Intel C++ 编译器中编译失败

clang++ 给出以下错误(参见现场演示 here)

main.cpp:8:20: error: unknown type name 'T'; did you mean 'S::T'?
t = m.operator T(); // Is this correct ?
^
S::T
main.cpp:2:11: note: 'S::T' declared here
using T = float;

MSVC++ 给出以下错误(参见现场演示 here)

source_file.cpp(8): error C2833: 'operator T' is not a recognized operator or type
source_file.cpp(8): error C2059: syntax error: 'newline'

英特尔 C++ 编译器也拒绝此代码(参见现场演示 here)

那么,问题是哪个编译器就在这里? g++ 在这里不正确还是其他 3 个编译器在这里不正确? C++ 标准对此有何规定?

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