Перегрузка эталонных преобразований - PullRequest
1 голос
/ 09 марта 2012

Кажется, что следующий класс компилирует , но операторы преобразования никогда не вызываются:

class A
{
public:
  operator A() const { std::cout << "A() called" << std::endl; return *this; }
  operator A&() { std::cout << "A&() called" << std::endl; return *this; }
  operator const A&() const { std::cout << "const A&() called" << std::endl; return *this; }
};

Функция, определяющая преобразование ссылки на себя, просто игнорируется?

1 Ответ

1 голос
/ 09 марта 2012

Вот цитата из 12.3.2

A conversion function is never used to convert a (possibly cv-qualified) object to the (possibly cv-qualified) same object type (or a reference to it)

Кроме того, использование -Wall -Wextra -pedantic -ansi на gcc дало мне: warning: this statement has no effect для статического приведения.(Кроме того, попробуйте clang online , это даст вам хорошие сообщения об ошибках компилятора).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...