タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

c++0xに関するamachangのブックマーク (5)

  • Boost.Randomで簡単な確率 - Faith and Brave - C++で遊ぼう

    たまに欲しくなるのでメモ。 #include <iostream> #include <ctime> #include <boost/array.hpp> #include <boost/random.hpp> using namespace boost; int main() { // 80%の確率で0, 20%の確率で1 array<int, 10> probability = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1}; mt19937 gen(static_cast<unsigned long>(std::time(0))); uniform_int<> dst(0, probability.size() - 1); variate_generator<mt19937, uniform_int<> > rand(gen, dst); for (int i = 0;

    Boost.Randomで簡単な確率 - Faith and Brave - C++で遊ぼう
    amachang
    amachang 2009/06/29
    boost::variate_generator /アルゴリズムと分布を指定して乱数を生成。
  • C++0x explicit bool - Faith and Brave - C++で遊ぼう

    スマートポインタのようなクラスを作成する場合、if文でヌルポインタかどうか判定できるようにするために operator boolをオーバーロードします。 template <class T> class smart_ptr { T* p_; public: operator bool() const { return p_ != 0; } }; smart_ptr<int> p; // OK if (p) { // ポインタは有効 } else { // ポインタは無効 } しかし、この方法では以下のような意味のないコードもコンパイルが通ってしまいます。 float f = p; int x = p + 1; cout << p << endl; C++03には、この問題を解決するために"conversion to unspecified bool"というイディオムがあります。 これを使用

    C++0x explicit bool - Faith and Brave - C++で遊ぼう
    amachang
    amachang 2009/04/30
    メンバポインタ→boolの暗黙変換はできるが、メンバポインタ→整数の暗黙変換はできない。この性質を生かして bool にだけ暗黙変換可能なクラスを生成するイディオム。/それを要らなくするための "explicit conversion"
  • C++0xではメタ関数をコンセプトで書く(かも) - Faith and Brave - C++で遊ぼう

    C++03だと依存名に対してtypenameを付けないといけないので メタ関数書くとけっこう長くなってしまいます。 template <class T> struct identity { typedef T type; // これはいいんだけど }; template <class T> struct add_pointer { // メタ関数内でメタ関数呼んだりするとtypename付けるのめんどくさい typedef typename identity<T>::type* type; }; C++0xでは、コンセプト内で型を制約することによりそれが型であることが明示的になるから そのコンセプトを使う側ではtypenameを書かなくてもいいので、 メタ関数もコンセプトで書いちゃえばtypename省略できるんじゃないかと思ってます。 auto concept AddPointer<T>

    C++0xではメタ関数をコンセプトで書く(かも) - Faith and Brave - C++で遊ぼう
    amachang
    amachang 2009/04/17
    concept を宣言すれば、メンバのメタな型(typename かどうか)を制約できるので、使う側では typename を書かなくてよくなる
  • C++0x 「N1385 転送問題:引数」の日本語訳 - Faith and Brave - C++で遊ぼう

    公開します。 翻訳がおかしいところがあったら教えてください。 N1385 The Forwarding Problem - Arguments.pdf 原文はこれです。

    C++0x 「N1385 転送問題:引数」の日本語訳 - Faith and Brave - C++で遊ぼう
    amachang
    amachang 2008/11/13
    C++0x で導入される右辺値参照の使いどころ。C++ の問題点としてもおもしろい。/ template<class A> void f(A& a) {} を f(1) で呼び出せないというところから、試行錯誤。すごい
  • C++11 - Wikipedia

    この記事は更新が必要とされています。 この記事には古い情報が掲載されています。編集の際に新しい情報を記事に反映させてください。反映後、このタグは除去してください。 (2019年1月) C++11は、プログラミング言語 C++ のISO標準 ISO/IEC 14882:2011 の略称である。規格の策定中は2009年中の標準化を目指していたため、C++0x という仮称で呼ばれていた。 ISO/IEC 14882:2003 (C++03) に代わるものとして、2011年8月12日にISOによって承認された[4]。後継のC++14が2014年8月18日に承認されている。 コア言語への機能追加や標準C++ライブラリの拡張を施し、C++TR1ライブラリの大部分を(数学的特殊関数ライブラリを除いて)取り込んでいる。 C++ への修正はコア言語と標準ライブラリの双方に及ぶ。 委員会は、新規格の個別の要素

    amachang
    amachang 2008/11/12
    次期 C++ の標準 C++0x のまとめ。すごい充実。コード多数。/「型推論」「可変テンプレート引数」この二つでコードを書く量がかなり減りそう/ See Also: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/
  • 1