タグ

C++0xに関するnharukiのブックマーク (16)

  • C++0xにすごい変更が来た

    Batavia会議は、だいぶ興味深いことになった。詳しくは、正式なNのペーパーが出てから解説するが、とにかく、非常に重要な項目をふたつだけ解説する。 まず、attributeによって提供されていた多くのクラスのメンバーに関する機能は、キーワードを与えられた。これは、言語機能は、特別な文法を与えるに値するという思想からである。会議でコンセンサスの得られた文法は以下の通りである。 struct Base { virtual void f() { } int x ; } ; struct Derived final explicit : Base { virtual void f() override { } int x new ; } ; 機能はattributeで提供されていたものと全く変わらないので、説明は省く。変更点としては、base_checkのかわりにexplicitを使い、hidi

    nharuki
    nharuki 2010/11/16
    「文脈依存キーワード」と「暗黙のコピーコンストラクターの扱い」
  • range-based forの興味深い使い方を発見した

    初期化の部分を執筆中に、ふと、range-based forの面白い使い方を思いついた template < typename ... Types > void f( Types ... args ) { for ( auto value : { int(args)... } ) { std::cout << value << std::endl ; } } int main() { f( 1 ) ; f( 1, 2, 3 ) ; f( 1, 2, 3, 4, 5 ) ; } range-based forには、初期化リストを渡せる。初期化リストには、引数パックを使うことができる。ということは、わざわざ再帰的なアルゴリズムを使わずして、Varidic Templatesを使った可変引数をすべてforで回せるのである。int型にキャストしているのは、Variadic Templatesは、そ

  • 本の虫: lambda 完全解説

    目的 この記事は、C++0xのlambdaを完全に解説せんとする目的を以て書かれた。サンプルコードは最小に留め、エラー処理等は省いた。この記事さえ読めば、今日からlambdaを恐れることなく使う物のC++0xプログラマになれるだろう。 lambdaとは何ぞや lambdaである。あるものは、lambda関数、あるいは無名関数という名称を使っている。いったいlambdaとは何なのか。 lambdaは関数である。また、特に名前はない。したがって、lambda関数、無名関数と呼ぶのは、間違ってはいない。しかしここでは、単にlambdaと呼ぶことにする。 lambdaを定義しよう lambdaは関数オブジェクトである。lambdaは関数オブジェクトである。これはとても大事なので二度書いた。lambdaは関数オブジェクト以外の何物でもない。ところが不思議なことに、皆lambdaが単なる関数オブジェ

  • プログラミングの魔導書 〜Programmers' Grimoire〜 Vol.1 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

    ついに出ました。 株式会社ロングゲート 自分は「Chronoライブラリで考える型システム」という題で書かせて頂きました。 内容について どんな内容かというと、ChronoというC++0xで新しく入る時間ユーティリティを通じて、型システムがいかに素晴らしいかというのを語っています。6ページ弱しか無いので、サクッと読めると思います。 そもそもどうしてこのテーマにしたかというと、当初はChronoライブラリを解説する予定だったのですが、このライブラリの単位を型で表現するという方法が非常に素晴らしいので、このライブラリを例として、型について話すことしました。型について考える機会になればいいかなと思います。 ratio は万能じゃない id:bleis さんが 確かに、単位を汎用的に扱えるととても嬉しい。嬉しいんですが、ratio だけじゃ解決できない単位が身近にあるんですよね・・・*2 *2:あ、

    プログラミングの魔導書 〜Programmers' Grimoire〜 Vol.1 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ
  • post Rapperswil mailingが公開された

    ISO/IEC JTC1/SC22/WG21 - Papers 2010 最新ドラフトは、N3126になった。もっとも、このドラフトには、今回のRapperswill会議で、変更すべきだと決定された変更の全ては含まれていない。まだ、細かい文面を考案中だからだ。 また変更点を確認して、いま執筆中の参考書の、すでに書き終えた部分との齟齬を確かめる作業が始まる。 N3103: Security impact of noexcept 単なる例示のためのペーパー。noexceptとマークされた関数が、例外を外に投げた場合、直ちにterminateする。このルールが守られない場合、具体的なある実行環境で、セキュリティ上の問題を引き起こす。したがって、かならず実装はterminateしなければならない。 N3106 min/max/minmaxにおける、文面の変更間違いの修正。 N3108 std::b

    nharuki
    nharuki 2010/08/29
    ドラフトの改訂版や新規のペーパー・修正提案の概要
  • C++0x - Variadic Templates - Faith and Brave - C++で遊ぼう

    可変長テンプレート引数 こんなことができるようになる template <class... Types> class tuple; tuple<> tup0; tuple<int, string> tup1(3, "abc"); tuple<int, string, double> tup2(3, "abc", 3.14); sizeof...演算子を使用すると型の数を取得できる template <class... Types> struct count { static const int value = sizeof...(Types); }; Variadic Templatesを使用するクラスはやはり再帰テンプレートを使って処理するようだ template <int Index, class... Types> struct tuple_impl; template <int I

    C++0x - Variadic Templates - Faith and Brave - C++で遊ぼう
  • 次期C++に導入されるメモリバリアについて解説してみる - yamasaのネタ帳

    前のエントリで次期C++標準(通称C++0x)にatomic型とメモリバリアが導入されるという話をしました。今回はそのC++での実装について、もう少し深く追いかけてみます。 スライド資料では「atomic操作 + acquire/releaseバリア」が基であると書きましたが、実際に次期C++に導入される予定のatomic APIは、もう少し複雑な仕様になっています。一番の違いは、メモリバリアの種類が増えていることです。 次期C++標準の現在のドラフトでは、メモリバリアの種類を表すenum型の定義は以下のようになっています。 namespace std { typedef enum memory_order { memory_order_relaxed, memory_order_consume, memory_order_acquire, memory_order_release, m

    次期C++に導入されるメモリバリアについて解説してみる - yamasaのネタ帳
  • Page Redirection - GNU Project

    This page has been incorporated into another. If you are not redirected automatically, click here. For questions related to the use of GCC, please consult these web pages and the GCC manuals. If that fails, the gcc-help@gcc.gnu.org mailing list might help. Comments on these web pages and the development of GCC are welcome on our developer list at gcc@gcc.gnu.org. All of our lists have public archi

    nharuki
    nharuki 2010/08/13
    GNU GCCのC++0x対応状況
  • 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++ への修正はコア言語と標準ライブラリの双方に及ぶ。 委員会

  • 数列辞典

    The page you're looking for has moved, been replaced, or is currently unavailable to view. If you previously bookmarked a page and have now reached this message, check to make sure the link was not shortened, or go to our home page to find the page from there. We've been upgrading this site. If you selected a link on our site and reached this message, use the Back button to return to the previous

    数列辞典
  • C++11 FAQ

    訳者注 下記の文章は C++0x - the next ISO C++ standard の暫定勝手和訳です。 翻訳は現在進行中であり、未完成かつ不正確である可能性があります。 っていうか未完成かつ不正確です。 正しい情報を必要とされる方は、原文を当たってくださいますようよろしくお願いします。 誤訳の指摘は大歓迎です。 2010年01月06日更新 (訳注: 和訳は2010年01月21日更新) この文書 (訳注: 原文) は Bjarne Stroustrup が記述、更新している。 建設的なコメント、訂正、参考資料、提案はもちろん大いに歓迎する。 現在、著者は参考資料の充実化と清書に取り組んでいる。 C++0x は次期 ISO C++ 標準である。 現時点の 草案 を、コメント募集のため公開している。 以前の (そして現在の) 標準は、しばしば C++98 や C++03 と呼ばれる; C

  • C++0x - 右辺値参照(Rvalue reference) / ムーブ・セマンティクス(Move semantics) - Faith and Brave - C で遊ぼう

    コピー(一時オブジェクト)を作成せず、ポインタの移動しようというもの 移動されたオブジェクトは破壊される(関数の戻り値等の右辺値は破壊しても全く問題ないでしょ) 一時オブジェクトを作らないので、より高速で無駄のないプログラミングができるようになる struct string { // copy semantics string(const string& s) : data_(new char[s.size_]), size_(s.size_) { memcpy(data_, s.data_, size_); } string& operator=(const string& s) { if (this != &s) { if (size_ < s.size_) // get sufficient data buffer size_ = s.size_; memcpy(data_, s.d

    C++0x - 右辺値参照(Rvalue reference) / ムーブ・セマンティクス(Move semantics) - Faith and Brave - C で遊ぼう
  • auto_ptr終了のおしらせ

    目次 ホーム 連絡をする RSS Login Blog 利用状況 投稿数 - 1078 記事 - 2 コメント - 25645 トラックバック - 363 ニュース 著作とお薦めの品々は 著作とお薦めの品々は 東方熱帯林へ。 わんくま 東京勉強会#2 C++/CLI カクテル・レシピ 東京勉強会#3 template vs. generics 大阪勉強会#6 C++むかしばなし 東京勉強会#7 C++むかしばなし 東京勉強会#8 STL/CLRによるGeneric Programming TechEd 2007 @YOKOHAMA C++C++/CLI・C# 適材適所 東京勉強会#14 Making of BOF 東京勉強会#15 状態遷移 名古屋勉強会#2 WinUnit - お気楽お手軽UnitTest CodeZine Cで実現する「ぷちオブジェクト指向」 CUnitによるテスト駆

  • C++0x基礎文法最速マスター - Faith and Brave - C++で遊ぼう

    C++0xになると、C++03でごちゃごちゃした部分がだいぶ すっきり書けるようになるので、C++0xでの入門はこんな感じになるよー、 という気持ちで書きました。 1. Hello World C++0xでの入出力には、IOStreamというものを使用します。 <<演算子でどんどんつないでいきます。 以下のプログラムの読み方は 「標準出力(cout)に"Hello World"という文字列と、改行(endl)を出力する」 です。 #include <iostream> int main() { std::cout << "Hello World" << std::endl; return 0; } Hello World coutとendlを使用するには、 #include <iostream> のように、という標準ライブラリのファイルを読み込む必要があります。 2. コメント 行コメント

    C++0x基礎文法最速マスター - Faith and Brave - C++で遊ぼう
  • C++0x 新たな関数宣言構文 - Faith and Brave - C++で遊ぼう

    以下のように、戻り値の型を後ろに書けるようになる // now std::vector<double> foo(double); // new auto foo(double) -> std::vector<double>; 戻り値の型を後置すると、decltype でパラメータを計算した型を戻り値の型にできる template <class T, class U> auto foo(T t, U u) -> decltype(t * u) { return t * u; } いろいろ応用できそうな気がする N2541 New Function Declarator Syntax Wording C++0x言語拡張まとめ

    C++0x 新たな関数宣言構文 - Faith and Brave - C++で遊ぼう
  • Variadic Templatesの解説

    Variadic Templatesである。Variadic Templatesとは、そもそも何か。 Variadic functionというものがある。最も身近な例は、printfである。 int printf ( char const * format, ... ) ; printf( "number: %d, string: %s", 123, "hello" ) ; このように、任意の数の引数をとることができる関数を、Variadic functionという。 Variadic Templatesは、任意の数の、テンプレート引数を取れるテンプレートである。 これまで、型安全に任意の数の引数を取る方法はなかった。もちろん、関数はオーバーロードできる。 template < typename T1 > T f( T1 const & t1 ) ; template < typename

    nharuki
    nharuki 2010/07/15
    Variadic Templates=可変長引数テンプレート
  • 1