Рассмотрим тип bar
, который имеет определенные пользователем операторы преобразования для ссылок типа bar
:
struct bar
{
operator bar & ();
operator const bar & () const;
};
Когда будут применены эти преобразования? Более того, что означает, что эти операторы были deleted
? Есть ли интересное использование любой функции?
В следующей программе не применяется преобразование:
#include <iostream>
struct bar
{
operator bar & ()
{
std::cout << "operator bar &()" << std::endl;
return *this;
}
operator const bar & () const
{
std::cout << "operator const bar &() const" << std::endl;
return *this;
}
};
void foo(bar x)
{
}
int main()
{
bar x;
bar y = x; // copy, no conversion
y = x; // assignment, no conversion
foo(x); // copy, no conversion
y = (bar&)x; // no output
y = (const bar&)x; // no output
return 0;
}