lynx   »   [go: up one dir, main page]

タグ

c++とtemplateに関するTAKESAKOのブックマーク (5)

  • More C++ Idioms - Wikibooks

    C++ はあまりに『熟練者に優しく』なってしまった」(C++ has indeed become too "expert friendly") Stroustrup 氏の言は真実である。なぜなら熟練者は言語のイディオムに深く精通しているからである。プログラマが理解するイディオムの増加に従って、言語は彼あるいは彼女にとってよりフレンドリーになる。この open content book の目的はほどほどに C++ に精通しているプログラマに対して現代的な C++ のイディオムを提示し、C++ をよりずっとフレンドリーに感じるレベルにまで知識を引き上げる助けと成る事である。書は熟練した C++ プログラマが C++ を使ってプログラミングや設計を行う際に用いる事の多い再利用可能なイディオムの網羅的なカタログと成るよう意図されている。これは、それらのテクニックや語彙をひとまとめにしようという

  • 2004-06-05

    CRTPについてちまちま書いていたのをまとめてみました. CRTP(Curiously Reccursive/Reccuring Template Pattern)とは以下のように基底クラスのテンプレート引数として自分自身を代入するテクニックのことを指します. template class Base{/*.....*/}; class C : public Base{/*.....*/}; よく見かけるパターンなので,これがどういう使われ方をしているかを適当にまとめてみました. あるクラスの機能の一部を変えてコードの再利用を行う場合,変えたい機能を提供するメンバ関数を仮想関数にしてそれを派生クラスでオーバーライドするのが通常の方法ですが,CRTPを使えば仮想関数を用いずに行うことができます. 自分で何か良さそうな例を書こうと思ったのですが,あんまり適切な例が思い浮かばないので,このCRTP

    2004-06-05
  • Kazuho@Cybozu Labs: スレッド間で共有する変数のアクセス権制御を C++ コンパイラで強制する方法

    マルチスレッドなプログラムを書いていると、スレッド間で共有する変数へのアクセスを正しく直列化できているか、という点が常に問題になります。どうせなら、正しく書けているかコンパイル時に確認したいよね、ということで、以下のような C++ テンプレートを書いてみました。 template <typename T> class cac_mutex_t { public: class lockref { protected: cac_mutex_t<T>* m_; public: lockref(cac_mutex_t<T>& m) : m_(&m) { pthread_mutex_lock(&m_->mutex_); } ~lockref() { pthread_mutex_unlock(&m_->mutex_); } T& operator*() { return m_->t_; } T* ope

  • テンプレートメタプログラミング - Wikipedia

    出典は列挙するだけでなく、脚注などを用いてどの記述の情報源であるかを明記してください。 記事の信頼性向上にご協力をお願いいたします。(2022年9月) テンプレートメタプログラミング(英: template metaprogramming)は、メタプログラミング技法の一種であり、コンパイラがテンプレートを使って一時的ソースコードを生成し、それを他のソースコードと結合してコンパイルする方式である。テンプレートが出力するものは、コンパイル時の定数、データ構造、関数定義などがある。テンプレートの利用は言わばコンパイル時の実行である。この技法は様々な言語で使われている(C++、D言語、Eiffel、Haskell、ML、XLなど)。 メタプログラミング手法としてのテンプレート利用には2段階の操作が必要である。まずテンプレートを定義し、次にそれをインスタンス化しなければならない。テンプレートは生成す

  • C++テンプレートでFizzBuzz - おびなたん☆

    これは、1月20日に北海道にて行われた日野望の会で披露したネタのまとめと解説のエントリーです。 そもそも こんなしょーもないネタを思いついたのは、このブログの昨年の検索キーワードトップ3が C++ FizzBuzz テンプレート だったから。それぞれのキーワードについては、 C++ - Wikipedia Fizz Buzz - Wikipedia テンプレート(プログラミング)- Wikipedia あたりを見てちょうだい。 特に、会場には「テンプレートって知らなーい」って人が2,3人いたのでテンプレートについてちゃんと説明したかったのですが、いかんせん時間が足りなすぎでした。テンプレートをまじめに語るとが一冊書けてしまうので、端折りました。当然、ここでも端折ります。 上述のリンク先とかを見るか、テンプレートをまじめに語ったを一冊読んでくだせえ。 とりあえず、おいらのFizzBuz

    C++テンプレートでFizzBuzz - おびなたん☆
  • 1
Лучший частный хостинг