簡単な質問です。次のような関数シグネチャがある場合
template <typename T, typename ItType>
ItType binarySearch ( T mid, ItType first, ItType last );
とにかく次のようなことをすることはありますか?この構文が正しくないことはわかっていますが、通常の関数と同様の decltype を実行できるので、以下を参照してください。コンパイラはコンパイル時に ItType の型を知っているので、*ItType の型も推測できるはずではありませんか?
template <typename ItType>
ItType binarySearch ( decltype(*ItType) mid, ItType first, ItType last );
// lambda
auto p = v.begin() + (v.end() - v.begin())/2;
std::partition ( v.begin(), v.end(), [p](decltype(*p) i) { return i < *p; } )