gpt4 book ai didi

c++ - Clang 错误 – 编译器错误或缺少一些细节?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:42:29 25 4
gpt4 key购买 nike

在对可变参数模板、初始化列表等进行一些试验时,我无意中发现了以下无意义的代码,触发了一条相当有趣的错误消息。

首先,让我们定义一个小类,用于使用重载的operator,() 进行测试:

class Dummy {
public:
Dummy() {}
Dummy &operator,(int) { return *this; }
};

现在我们按以下方式使用这个类:

int test1 = (Dummy{}, 0);

当使用 clang 版本 6.0.0 (tags/RELEASE_600/final 334239) 编译时,这会触发一个非常合法的错误消息(因为运算符(operator)基本上从中删除了 0背面):

error: no viable conversion from 'Dummy' to 'int'

现在让我们稍微改变一下这个例子:

int test2 { (Dummy{}, 0) };

据我了解,这基本上应该触发相同的消息,因为最终我们在这里尝试做同样的事情。但是,错误是不同的:

error: no viable conversion from 'void' to 'int'

大问题:void 是这里的错误还是我只是缺少一些转换或解释?

Code snippet on Compiler Explorer

最佳答案

看起来像 clang 中的错误,尝试 this , 事实上 this .

关于c++ - Clang 错误 – 编译器错误或缺少一些细节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50883826/

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