Garbage Collection

塵も積もれば山

目次

Blog 利用状況

ニュース

C++とかC#とか数学ネタを投下していく予定です。

[その他のページ]
日々の四方山話を綴った日記出水の日記帳

書庫

日記カテゴリ

[C++0x]インフォームドコンセプト

先日のわんくま勉強会で、アキラさんの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のジェネリックとは大きな違いです。

投稿日時 : 2008年7月15日 5:24

Feedback

# re: [C++0x]インフォームドコンセプト 2008/07/15 8:55 アキラ

あー、関数で持つってこういうことですか。

# re: [C++0x]インフォームドコンセプト 2008/07/15 9:13 アキラ

これでもOKです

template <typename T>
class List {
public:
 requires LessThanComparable<T>
 void sort();
};

タイトル
名前
Url
コメント