先日のわんくま勉強会で、アキラさんのC++0xのセッションがあり、
そこで質問した事項で自己解決しちゃったかもしれないです。
Conceptは関数ではもてないの?ってことなんですが…
そもそも、Conceptはクラスじゃなくてテンプレートに属するものっぽいですから…
NGパターン
template <typename T>
class List{
public:
// 直接中身を書くと、もともとの弱い制限に引きずられる。
void sort(){
...
}
};
OKパターン
template <typename T>
class List{
public:
// まず宣言だけをしておいて…
void sort();
};
template <typename T>
requires LessThanComparable<T>
//こっちでより強い制限で実体を書く
void List<T>::sort(){
...
}
その関数にコンパイルエラーになる要素があっても
使わなければ、問題ないってのはいいですね。
.NETのジェネリックとは大きな違いです。