C++で演算子をオーバーロードすると、演算子の優先順位を変更できないのはなぜですか?たとえば、乗算の前に加算を行うことが理に適っているクラスがあった場合、加算演算子を乗算より優先させるにはどうすればよいでしょうか?オペレータの優先順位C++でのオーバーロード
これは、なぜこの制限を回避するかと尋ねているので、この質問Operator overloading and precedence とは異なります。
コンパイラのカスタマイズを避け、C++ 14標準のみを使用することをお勧めします。サードパーティライブラリはOKです。
* "C++で演算子をオーバーロードすると、演算子の優先順位を変更できないのはなぜですか?" * "この制限を回避する方法" *あなたはできません。 –
実現可能な回避策があるのではないかと思います。 –
ほとんどの場合、伝統的なコンパイラ設計では、文法とコードの構文が最初に解析されるためです。それが解析された後でさえ、C++コンパイラは各演算子がどこから来て、組み込み、または多重定義されているかを調べようとします。その時までに、馬はすでに納屋を離れています。 –