鍋あり谷あり

テーマを決めずに適当に書いています。

C++で2項演算子を増やす

ふと。C++は2項演算子を増やせるということに気がついた。単項演算子は関数呼び出しと大差ないのでべつに増やしたくはならないんだが、2項演算子は増やしたいと思うことも多い。内積外積とか。そういう類で。

使い方はこんな感じ:

class int_max_type 
	: public named_binary_operator<int_max_type, int, int, int >
{
public:
	int operator()( int a, int b )
	{
		return a<b?b:a;
	}
};

void hoge()
{
	int_max_type max;
	int a= foo() <max> bar() <max> baz();
	b <max>= bar();
}

まだ実装してないので、気づいていない問題があるかもしれない。
それと。多重定義を簡単に実装するのは難しいのかも。
書いてないので何とも言えないが、型が決まっている2項演算子は上記のように書けると思う。

まあとにかく。優先順位が変えられないことは間違いない。
あと。= の優先順位がちょっと奇妙なので、トラブルの原因になると思う。