Range-base STL アルゴリズム

C++テンプレートテクニック 5-2


ここの話はいろいろと面白いですね。beginやendを汎用化して呼び分ける。コードも簡素になるし素晴らしいです。

ただし、endの定義が以下のように参照の配列を受け取る前提になっているので

template<class T,std::size_t N>
T* end(T (&ar)[N]) {
    return ar + N;
}

配列のポインタを扱えないので注意が必要ですね。