Неоднозначное предупреждение о обращении: мне это волновать?C++

Программы на C++. Форум разработчиков
Anonymous
Неоднозначное предупреждение о обращении: мне это волновать?

Сообщение Anonymous »

Этот вопрос можно считать, вероятно, теоретическим, поскольку я не понимаю, почему у меня будет такой дизайн в реальном коде.
У меня есть два класса с некоторыми операторами конверсии: < /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

Вернуться в «C++»