Za to operator da radę zrobić "operator "-|-", choć nie jestem na 100% pewien.

Nie da rady

Kompilator mówi, że to syntax error, więc nie przekonamy go sprytnym przeciążeniem operatorów (nawet z pomocą (a fe!) makrodefinicji - to są trzy symbole, nie zdefiniuje się takiego makra

).
Gdyby C++ był normalny to by się...
if(LineA and LineB is Perpendicular)
{...}
Co by się przetłumaczyło na:
if(LineA.and(LineB).is(Perpendicular))
{...}
Chociaż... pi razy oko, bez edytora napisane:
#define is ==
namespace Math::Lines
{
enum Correlation
{
Parallel,
Perpendicular
};
class Line
{
public:
float A,B;
Correlation operator&&(const Line);
};
}
using namespace Math::Lines;
if((A and B) is Perpendicular)
{...};