少し前に、次のコード行に出くわしました。
return accumulate(s, s + size, char(), (_1 ^ _2));
ブーストヘッダーを使用していましたが、非常に非常にエレガントだといつも思っていました(ラムダには名前付きの入力パラメーターがないため、非常に短いことに注意してください:) C++ 11にはラムダ関数があることを知っていることに注意してください。これはラムダについてではなく、この素晴らしい短い構文についてです。
ハードコーディングされた型で...
return accumulate(s, s+size, char(), [](char l, char r){ return l ^ r; });
汎用ラムダが許可されている場合(C++14)...
return accumulate(s, s+size, char(), [](auto l, auto r){ return l ^ r; });
とりあえず std:: bit_xor ...
return accumulate(s, s+size, char(), bit_xor<char>());
Boost なしでそれを行う唯一の方法は、それを作成する Boost コンポーネントを再発明することです。Boost コンポーネントを実装せずに、Boost コンポーネントの構文を使用できるでしょうか?
言語ソリューションはラムダです。ラムダが気に入らない場合は、Boost を使用するか、ラムダのこの特定の部分を盗む必要があります。