引发异常触发的 C4913 警告

C4913 warning triggered by throwing an exception

提问人:tnix 提问时间:3/25/2023 最后编辑:tnix 更新时间:3/26/2023 访问量:44

问:

我有一些这样的代码:

#include <stdexcept>

namespace some_space {
    struct some_class{
    };

    some_class operator,(some_class a, float ){
        return a;
    }

    int a(){
        // somewhere in this function
        throw std::exception{};
    }
}

使用 MSVC 编译,我收到此警告:/W4

<source>(13): warning C4913: user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used

我想知道为什么第 13 行会导致此警告。有人对此有解释吗?throw std::exception{};

此警告的文档仅列出了使用逗号运算符的示例。但是,在这种情况下,我没有看到运算符的使用。

这是显示此警告的 godbolt 的链接。我的想法是,也许宏会导致问题,但预处理器输出没有显示任何替换。

抛出内置类型(如或可转换的类)不会引起警告。 抛出任何其他类都会触发警告。intsome_class

C Visual-C++ 警告

评论

0赞 starball 3/25/2023
@Eljay哪个部分不匹配?我想我是瞎子。
0赞 Eljay 3/25/2023
@user • 与 C4913 警告无关,所以我删除了我的评论。这。似乎是编译器中的一个小错误。operator,(int, float)
0赞 starball 3/25/2023
@Eljay在哪里?我在这里或神栓中没有看到“”。operator,(int, float

答: 暂无答案