タグ

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

  • C++0xが国際標準C++11へ。 - Faith and Brave - C++で遊ぼう

    cppllとboostjpに送ったメールですが、こちらにも再掲します: == ついに ねんがんの 国際標準をてにいれたぞ!: C++0x、全会一致で承認される C++0xが満場一致で国際標準として承認されました。 やりました! 日からも全員が賛成票を出していました。 さて、C++11の仕様が固まってこれから大きな変更はないでしょうから、 そろそろC++11の解説サイトやリファレンスを整備していかなくてはいけません。 cppll, boostjpのコミュニティで集合知としてのリファレンスサイトを作っていきたいと考えています。 私の方でGoogle Sitesのcpprefjpを作成し進めているのですが、人手不足でなかなか進んでいない状況です。 cpprefjp - C++語リファレンス この活動に興味を持ち、コアメンバとなってくれる方を募集しています。 C++11が広く使われて欲しいと

    C++0xが国際標準C++11へ。 - Faith and Brave - C++で遊ぼう
  • C++0x thread_local - Faith and Brave - C++で遊ぼう

    マルチスレッドアプリケーションでは、スレッドごとに一意なデータを保持する必要が起きます。 これを、スレッドローカル記憶域と呼びます。 C++0x では、これを言語でサポートするため、 thread_local というキーワードが追加され thread_local を付けて宣言された変数は、スレッドごとに一度だけインスタンス化されます。 #include <threads> thread_local int j = 42; void foo() { j = 43; } int main() { std::thread t(foo); t.join(); if(j != 42) abort(); } 【スレッド変数のアドレス】 &演算子は、スレッド変数に使用された場合、現在のスレッドの変数のアドレスを返します。 なので、スレッド変数のアドレスは定数ではありません。 スレッドローカル記憶域は、ア

    C++0x thread_local - Faith and Brave - C++で遊ぼう
    f99aq
    f99aq 2008/10/13
  • C++0x More STL Algorithm - Faith and Brave - C++で遊ぼう

    C++0x で追加される STL アルゴリズム ・find_if_not find_if の逆. pred(*i) == false のイテレータを返す template<class InputIterator, class Predicate> inline InputIterator find_if_not(InputIterator first, InputIterator last, Predicate pred) { while (first != last && pred(*first)) ++first; return first; } #include <vector> #include <algorithm> using namespace std; // 偶数? bool is_even(int value) { return value % 2 == 0; } int

    C++0x More STL Algorithm - Faith and Brave - C++で遊ぼう
    f99aq
    f99aq 2008/07/07
  • C++0x ユーザー定義リテラル - Faith and Brave - C++で遊ぼう

    C++0x で提案されているユーザー定義のリテラルを使用すると以下のようなことができるようになる "Hello"s // std::string 101011100011b // binary literals 123km // unit is kilometers リテラルを定義するには、以下のような演算子を定義する X operator""suffix(const char*); X x = 1234suffix; // operator"suffix"("1234"); この場合、operator""suffixの引数は NULL 終端の文字列となる Variadic Templates を併用すると、リテラルを char 型の コンパイル時定数とすることができる template <char...> X operator""suffix(); X x = 1234suffix; /

    C++0x ユーザー定義リテラル - Faith and Brave - C++で遊ぼう
    f99aq
    f99aq 2008/05/14
  • 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++ への修正はコア言語と標準ライブラリの双方に及ぶ。 委員会

    f99aq
    f99aq 2008/03/08
    wktk
  • C++0x module - Faith and Brave - C++で遊ぼう

    post-c++0x: modules in c++ module かー・・・ ヘッダーファイルごとじゃなくてライブラリごとに管理できるようにする提案かな export std: public: namespace std { template <class T, class Allocator> class vector; } import std; int main() { std::vector<int> v; return 0; } むしろ、ファイル内だけで using directive できる仕組みがほしい(module とあんまり関係ないけど) // hoge.h using namespace std { // こんなふうに書けたらいいなー class hoge { vector<string> v; }; } // using namespace std // main.

    C++0x module - Faith and Brave - C++で遊ぼう
  • C++0x 右辺値参照の使い道 - Faith and Brave - C++で遊ぼう

    右辺値参照は主に大きいオブジェクトを戻り値にするときに使う vector<int> foo() { vector<int> v; ... return v; } int main() { vector<int>&& v = foo(); return 0; } だが、実際はライブラリ(クラス)の中で右辺値参照を処理することが多いだろう 右辺値参照の追加にともない、標準ライブラリは総書き換えされるので vectorのコピーコンストラクタと=演算子は以下のようになる template <class T, class Allocator=std::allocator<T>> class vector { public: vector(const vector&); vector(vector&&); vector& operator=(const vector&); vector& operat

    C++0x 右辺値参照の使い道 - Faith and Brave - C++で遊ぼう
  • 右辺値参照型と左辺値参照型 - Cry's Blog

    右辺値参照型と左辺値参照型は, 異なった型として扱われるのと, 関数の戻り値型 (とキャストの型) に指定された場合に,その関数の呼び出し結果が右辺値として扱われるか左辺値として扱われるかが異なるのと, 参照への参照をただの参照に変換する規則 (reference collapsing rule) において振る舞いが異なるのと, 初期化の semantics が違うのと, 関数のパラメタ型に指定されている場合のオーバーロード解決の規則が異なるのと, 関数テンプレートのパラメタ型として指定された場合に,型パラメタの推論の仕方が異なる のを除いて従来からの参照と振る舞いが全く一緒. (で,左辺値参照が従来からの参照に対応してる) 特に,一度でも名前がついたオブジェクトは明示的に変換をかけない限り常に左辺値として扱われる.この点に関しては,そのオブジェクトへの参照の型が右辺値参照型か左辺値参照型

    右辺値参照型と左辺値参照型 - Cry's Blog
    f99aq
    f99aq 2008/02/24
  • コンセプトを作ってみた - Faith and Brave - C++で遊ぼう

    C++0xからConceptが導入されますが、現在のC++でも使えるConceptを作ってみました とりあえずContainerコンセプトだけです Containerコンセプトを使えば、コンテナと配列を同じように扱うことができます namespace concept { template <class T> struct identity { typedef T type; }; template <class Container> struct container { typedef Container type; typedef typename Container::value_type value_type; typedef typename Container::reference reference; typedef typename Container::const_refe

    コンセプトを作ってみた - Faith and Brave - C++で遊ぼう
  • 2008-02-02 - Cry’s Diary : [C++0x][C++]可変長テンプレートの使い道が「型安全な printf」と「tuple」と「転送関数 (関数オブジェクト)」ぐらいだと思っている人へ送る,ちょっと早めの素敵な variadic

    N2461 より "12.6.2 Initializing bases and members" の 10 の例示コード. template<class... Mixins> class X : public Mixins... { public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; 同じく N2461 より "14.5.3 Variadic templates" の 5 における例示コード. template<typename...> struct Tuple {}; template<typename T1, typename T2> struct Pair {}; template<class ... Args1> struct zip { template<class ... Args2> struct wit

    2008-02-02 - Cry’s Diary : [C++0x][C++]可変長テンプレートの使い道が「型安全な printf」と「tuple」と「転送関数 (関数オブジェクト)」ぐらいだと思っている人へ送る,ちょっと早めの素敵な variadic
  • C++0x - Lambda Expressions and Closures(N2487) - Faith and Brave - C++で遊ぼう

    前回からの差分紹介 【ローカル変数の宣言構文】 N2413(前回) int ar[] = {3, 1, 4}; int sum = 0; int factor = 2; for_each(ar, ar + 3, <>(int value; &sum, factor) (sum += factor * value)); N2487(今回) ... : [ローカル変数名] (...) int ar[] = {3, 1, 4}; int sum = 0; int factor = 2; for_each(ar, ar + 3, <>(int value) : [&sum, factor] (sum += factor * value)); Boost.Lambdaの場合 int ar[] = {3, 1, 4}; int sum = 0; int factor = 2; for_each(ar,

    C++0x - Lambda Expressions and Closures(N2487) - Faith and Brave - C++で遊ぼう
  • C++ Technical Report 1 - Wikipedia

    C++ Technical Report 1 (TR1、Technical Report on C++ Library Extensions)は、ISO/IEC TR 19768:2007[1] の非公式名称で、標準C++ライブラリの拡張についての標準規格である。これには正規表現、スマートポインタ、ハッシュ表、擬似乱数生成器などが含まれている。TR1の目標は「拡張された標準C++ライブラリの使用方法について慣習を確立してほしい」とのことである[2]。 概要[編集] TR1は既に一部ないし全部を実装しているものもある。ちなみに、TR1のほとんどはBoostに含まれており、それが利用可能である。 TR1はC++のライブラリの拡張の全てではない。たとえばC++11ではスレッドに関するライブラリが含まれ、言語機能自体の拡張(move semanticsやvariadic templatesの追加な

  • C++0x - constexpr - Faith and Brave - C++で遊ぼう

    コンパイル時に実行される関数を定義できる これによって、関数の戻値をコンパイル時定数にできる いままで再帰テンプレートやクラステンプレートの特殊化で処理していたものが 関数テンプレートの特殊化でできるようになるようだ いままで template <class T> struct is_pointer { static const bool value = false; }; template <class T> struct is_pointer<T*> { static const bool value = true; }; static_assert(is_pointer<int*>::value, "not pointer"); これから template <class T> constexpr bool is_pointer(T*) { return true; } templat

    C++0x - constexpr - Faith and Brave - C++で遊ぼう
  • ムーブセマンティクスと右辺値参照 - イグトランスの頭の中

    話のネタはありながら、気が付けば木曜日となり、どうやら毎週木曜日に書くという習慣が自分の中に根付いたようです。 さて今日はC++の話です。ActiveBasicもバージョン5で色々と変わりそうですが、C++も目下新規格の制定に向けて話が進んでいます。その新規格は現在のところ、C++0xと呼ばれています。勿論200x年中の制定を見込まれているからですが、最近ではC++09という言葉もちらほら見かけ始めている気もします。 なお、そんなC++0xの様子はC++の標準化委員会のページで窺い知ることができます。 http://www.open-std.org/jtc1/sc22/wg21/ JTC1/SC22/WG21 – The C++ Standards Committee その中でも今回紹介したいのはムーブセマンティクス (move semantics)と右辺値参照 (rvalue refer

    ムーブセマンティクスと右辺値参照 - イグトランスの頭の中
    f99aq
    f99aq 2007/09/11
    move semantics ってこういうことだったのか
  • 1