У меня есть два класса с некоторыми операторами конверсии: < /p>
< Pre Class = "lang-cpp prettyprint-override">
Код: Выделить всё
class B;
class A {
public:
A() = default;
A(B const &);
};
class B {
public:
B() = default;
operator A();
};
A::A(B const &) {};
B::operator A() { return A{}; };
int main() {
[[maybe_unused]] A ad{B{}}; // direct init
[[maybe_unused]] A ac = B{}; // copy init
}
< /code>
live < /p>
только с GCC и с инициализацией копирования только я получил это предупреждение: < /p>
Предупреждение: выбор 'b :: operator a ()' over 'a :: a (const b &)' [-wconversion]
Предупреждение: для преобразования из 'b' 'A' [-wconversion]
Примечание: потому что последовательность преобразования для аргумента лучше < /p>
< /blockquote>
Не будучи хорошо Правила обращения, я не понимаю, имеет ли это предупреждение? Если нет, то как его можно замолчать (это может быть болезненным с -Веррором Подробнее здесь: https://stackoverflow.com/questions/794 ... uld-i-care
Мобильная версия