gpt4 book ai didi

c++ - 从构造函数二进制文件中删除 'explicit' 是否兼容?

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

我们正在使用的外部库包含以下显式构造函数:

class Chart {
public:
explicit Chart(Chart::Type type, Object *parent);
// ...
};

编译器发出以下警告:

chart.h: warning #2305: declaration of 'explicit' constructor
without a single argument is redundant

只删除 chart.h 中的 explicit 关键字而不重新编译库以避免警告是否二进制兼容?我的感觉是它是安全的,因为 explicit 在这种情况下无论如何都没有意义。谁能证实一下?

最佳答案

如果您明白我的意思,您最好的选择是在包含期间关闭该警告。 不要破解供应商代码。

对多参数构造函数使用 explicit 在 C++11 之后非常有意义,因为它可以用于停止隐式大括号初始化。此外,标准没有说删除explicit 必须保留类的布局,因此您必须假定删除explicit 可能破坏二进制兼容性。此外,删除它可能会改变人为设计的 SFINAE 模式的行为,因为该构造函数在某些情况下可能会重新可用。参见 http://en.cppreference.com/w/cpp/language/sfinae .

关于c++ - 从构造函数二进制文件中删除 'explicit' 是否兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39485411/

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