C++0x concept_mapの練習

RandomAccessIterator コンセプトを自作して concept_map の練習しました。

#include <iostream>
#include <vector>

auto concept RandomAccessIteratorEx<typename T> {
    typename value_type = T::value_type;
}


// ポインタでも使えるようにする
template <class T>
concept_map RandomAccessIteratorEx<T*> {
    typedef T value_type;
}


template <RandomAccessIteratorEx Iterator>
void sort(Iterator first, Iterator last)
{
}


int main()
{
    std::vector<int> v;
    sort(v.begin(), v.end()); // OK

    int ar[] = {1, 2, 3};
    sort(ar, ar+3); // OK
}


とりあえず、 implicit concept と explicit concept というものがたぶんわかりました。

そのうちどっかで書こう。