It's a simple way to avoid using the ugly "opAdd_r", eg: struct Currency { private int m_value; public static Currency opAdd(Currency lhs, Currency rhs) { return Currency(lhs.m_value + rhs.m_value); } }