g ++ - это право жаловаться, а Microsoft ошибается.Проблема с этим кодом заключается в том, что функция checkPointIn получает второй параметр по ссылке, что означает, что он должен принимать lvalue (например, переменную или разыменованный указатель).Однако код в checkPointInside передает временный объект, который является значением.По историческим причинам компилятор Microsoft допускает это, хотя это явно запрещено спецификацией.Обычно, если вы поднимаете уровень предупреждения до конца в компиляторе Microsoft, он действительно помечает этот код как ошибочный.
Чтобы это исправить, либо у checkPointIn должен быть последний аргумент по значению или по константной ссылке.Последнее, вероятно, является лучшим выбором, поскольку ссылки на const могут связываться с rvalues, если это необходимо, и избегать создания дорогостоящих копий в других случаях.