У меня есть тривиальный тестовый проект, который определяет класс с перегрузкой оператора.
struct v2
{
float x;
float y;
v2 operator+ (const v2& rhs) const
{
return { x + rhs.x, y + rhs.y };
}
};
int main()
{
v2 a = { 0, 1 };
v2 b = { 2, 3 };
v2 c = a + b;
return 0;
}
Если я ставлю точку останова в операторе возврата и ввожу a + b
в окне просмотра, я получаю следующую ошибку: no operator "+" matches these operands
Но a.operator+(b)
будет работать так отчетливоЯ не могу найти ничего, что говорит, что это не поддерживается.Фактически, я могу найти документы , которые явно говорят, что перегрузки операторов поддерживаются оценщиком выражений для собственного C ++ еще до VS 2010.
Я выполнилэто в VS 2015 и VS 2017, и оба не в состоянии оценить это.Я пытался реализовать оператор как функцию-член и функцию верхнего уровня, и опять же не радость.
У кого-нибудь есть или источник, или кто-то понимает, почему использование перегруженных операторов в окне просмотра не работает?Должно ли это работать?Есть какие-то тонкие настройки, которые нужно изменить?