Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

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

  • C++0x FAQ

    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++0x FAQ
    gfx
    gfx 2011/09/17
  • C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう

    C++0xの概要はこちら ・Angle bracket テンプレートの連続した山カッコの問題の解決 ・初期化子リスト ユーザー定義のクラスで配列のような初期化構文を実装可能になる ・Uniform initialization コンストラクタの構文と初期化子リストの構文が一様になる ・デリゲーティング・コンストラクタ コンストラクタから他のコンストラクタを呼び出せる ・auto 型推論 ・記憶クラス指定子としての auto の削除 autoキーワードの意味が変更になるため、下位互換がなくなる ・decltype sizeofの型版 ・Template Aliases テンプレートを使用して型の別名を付けることができる。いわゆるtemplate typedef ・拡張sizeof 構造体/クラスのメンバをインスタンス化せずにsizeofすることが可能になる ・nullptr ヌルポインタを表

    C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう
  • C++0xのUTF-8対応に問題あり

    今まであまり気にしていなかったのだが、C++0xのUTF-8対応には、非常に深刻な問題があるように思われる。 C++0xでは、u8 encoding prefixを使うことによって、UTF-8でエンコードされた文字列リテラルが使える。 u8"あいうえお" ; しかし、このリテラルの型は、char const [16]なのだ。(UTF-8では、ひらがなは一文字3バイトを要する。null終端を付け加えて、サイズは16となる。) しかし、charという型は、歴史的に、あらゆるマルチバイト文字コードを格納するのに使われている。charを入力に受け取った時点で、それがどんなエンコードを使っているかは分からないのだ。 つまり、以下の様な関数を書いた場合、 // UTF-8の文字列を入力に取る関数 void f( char const * ptr ) { // ptrがUTF-8文字列を参照している保証

  • post-Madrid mailingの簡易レビュー

    post-Madrid mailingが公開された。 最新の現行ドラフト(Working Draft)はn3291。ただし、今回はFDISがでている。FDISはn3290となる。現行ドラフトとの違いは、変更点の差分表示がされていないということである。 Core Issue 355: Global-scope :: in elaborated-type-specifier core issue 355に対する修正。規格の定義に従えば、struct ::A { } ;はill-formedであるが、現行のコンパイラーはすべてサポートしていることや、特に問題が見当たらないことを鑑みて、許可しようという変更。変更内容が膨大なため、ペーパーを作成した。 N3260: Consolidated corrections for a cluster of constexpr concerns 定数式に対す

    gfx
    gfx 2011/04/14
  • unique_ptr C++03 emulation

    Howard E. Hinnant 2009-01-02 unique_ptr Emulation for C++03 Compilers Download header here: unique_ptr.hpp Download header and tests here: unique_ptr.zip unique_ptr is a class template smart pointer currently in the C++0X CD1 draft. It is intended to be a safer and more flexible replacement for auto_ptr. It represents sole (unique) ownership of a resource such as memory (like auto_ptr).

    gfx
    gfx 2010/11/26
  • gccにconstexprが実装された

    GCC 4.6に、constexprが実装された。constexprについては、特に難しいことはない。単に、関数やクラスを、コンパイル時定数にできるというだけの話である。ともかく、せっかくなので使ってみる。この機能は、細々と解説するより、実際にコードを示したほうが分かりやすいであろう。 まずは、constexprな変数である。 int main() { constexpr int a = 0 ; // OK int value = 0 ; constexpr int b = value ; // エラー const int c = value ; // OK } constexpr指定された変数は、必ずコンパイル時定数になる。変数の初期化子は、定数式でなければならない。constとの違いは、constはコンパイル時定数でなくてもよいのである。constは、初期化子が定数式の場合、定数式にな

    gfx
    gfx 2010/11/17
  • deleted definitionによるクラスの初期化の制御

    bool型で初期化したいクラスがあるとする。 struct Boolen { Boolen( bool ) { } } ; 残念ながら、このクラスは、あまり宜しくない。なぜならば、C++には、忌々しい暗黙の型変換というものがあるからだ。 int main() { Boolen a = true ; // OK、当然だ Boolen b = 123 ; // OK、ハァ? Boolen c = &a ; // OK、おいおい、おかしいだろ常識的に考えて } このような馬鹿げたコードは、コンパイルエラーになって欲しい。もし、数値やポインターをboolとして扱いたいのであれば、明示的にキャストするべきなのだ。 int main() { Boolen a = true ; // OK、当然だ Boolen b = bool( 123 ) ; // 自分が何をしているのかは十分承知している Bool

    gfx
    gfx 2010/09/06
  • GC in C++0x

    2. 自己紹介  氏名: 新 康孝 (あたらし やすたか)  Twitter ID: yak_ex  Web: http://yak3.myhome.cx:8080/junks  C++ / Perl が主戦場  某自動車部品メーカーから某自動車メーカーへ出向中  現在、仕事でコードに触れていない  競技プログラミングTopCoder、Codeforces)で 潤い補充  GC は「ど素人」 3. 渡る世間は GC ばかり  Google Code Jam 2010 Qualifier 使用言語 1位 C++ 4911 6位 Ruby 221 2位 Java 2762 7位 PHP 170 3位 Python 1459 8位 Perl 146 4位 C 751 9位 Haskell 118 5位 C# 648 10位 Pascal 95 4. 渡る世間は GC ばかり

    GC in C++0x
    gfx
    gfx 2010/08/09
  • 『プログラミングの魔導書 〜Programmers' Grimoire〜』がすごいのです - moriyoshiの日記

    すでに多くの方がご存知のことと思いますが、株式会社ロングゲートからまもなく『プログラミングの魔導書 〜Programmers' Grimoire〜』が発刊されます。 発売前レビューをするということで、id:faith_and_brave さんより PDF を頂戴していたのですが、まったく自分の役割を自覚していなかった (内容のチェック的なものかと思ってました) ので、予約締切間近 (8/6、つまり明日までです!) ですが、ちょっと紹介させてもらいますね。 Bjarne Stroustrupへのインタビュー デンマーク生まれの長男で髪の毛が年々少なくなっているというビャーネ・ストロストォプさんへのインタビューです。インタビュワーは、丸刈りで丸刈りでC++が好きで「の虫」というブログを執筆されている、江添さんです。 C++0xの現況をざっくり把握するのに、どこを見るのが一番なんだろうか、と悩

    『プログラミングの魔導書 〜Programmers' Grimoire〜』がすごいのです - moriyoshiの日記
    gfx
    gfx 2010/08/06
  • C++0xの中でいらない機能

    私は、C++0xのすべてに賛同しているわけではない。むしろ逆に、不満は多い。オレの欲しかったこの機能がないという不満ではない。こんな機能いらないだろという不満である。 ユーザー定義リテラル ユーザー定義リテラルは、無駄である。識別子はかならずアンダースコアから始まらなければならない。これは、とても危険だ。なぜ、予約語の制限を無視できるかというと、ユーザー定義リテラルの識別子は、エンティティではない。すなわち、名前ではないからだ。名前ではないゆえに、予約語の制限にはあてはまらない。 ましてや、ユーザー定義リテラルを、名前空間の中に入れることができないというのは、致命的だ。もちろん、名前空間の中でも定義できるが、おそらく、実用にならないだろう。 それに、ユーザー定義リテラルでなければできないことというものがない。では、単なるシンタックスシュガーか。 // ユーザー定義リテラル auto x =

    gfx
    gfx 2010/06/08
    "ong long intは、C99から輸入したものである。C畑の連中の考えることは、たいていクソである。"
  • initializer listの解説

    C++の思想の一つに、組み込み型と、ユーザー定義型との、区別をなくすという理念がある。したがって、C++では、組み込み型だろうか、クラスだろうが、自動ストレージ、静的ストレージ、動的ストレージ上に、構築できるし、演算子をオーバーロードできる。C++の多くの機能が、組み込み型とクラスとの、区別をなくすよう、考案されてきた。 C++では、配列や構造体の初期化に、特殊な構文を使える。 int x[3] = { 1, 2, 3 } ; struct Foo { int i ; double d ; } ; Foo foo = { 123, 3.14 } ; これは、クラスでは、使えなかった。C++0xでは、これができるようになる。 とはいうものの、これは、特に解説を要するほどのものでもないのだ。 まず、この{}による初期化式を、リスト初期化という。ユーザー定義のコンストラクター、privateやp

    gfx
    gfx 2010/03/21
  • autoの意外な使い方

    江添亮 自由ソフトウェア主義者 C++ Evangelist C++標準化委員会の委員 ドワンゴ社員 C++11を執筆した。 株式会社ドワンゴで働いている。 Mail:boostcpp@gmail.com Twitter:@EzoeRyou GitHub: https://github.com/EzoeRyou 江添亮のマストドン@EzoeRyou 筆者にブログのネタを提供するために、品物をアマゾンお気に入りリスト経由で送りたい場合: Amazon.co.jp: 江添亮: 江添のほしい物リスト 筆者にブログのネタを提供するために、直接に品物を送りたい場合、住所をメールで質問してください。 View my complete profile ► 2020 (31) ► December (2) ► November (2) ► September (2) ► August (4) ► Jul

    gfx
    gfx 2010/03/07
    new auto(42) と new int(42) は同じ
  • 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++で遊ぼう
  • 本の虫: シンタックスシュガーとしてのlambdaの解説

    の虫: lambda 完全解説で、lambdaの全機能は、ほぼ網羅したと思う。lambdaの文法は、それほど難しくはないと思うのだが、難しいと感じる人がいるらしい。とくに、キャプチャが理解できない人がいるそうだ。そこで今回は、lambdaの根を解説してみようと思う。 lambdaというのは、そもそも関数オブジェクトのシンタックスシュガーなのである。例えば、 namespace hito { template< class InputIterator, class Function > Function for_each( InputIterator first, InputIterator last, Function f ) { for ( ; first != last ; ++first ) f( *first ) ; return f ; } } int main() { st

  • 本の虫: lambda 完全解説

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

  • C++0x 標準コンテナのsize()の計算量を規定 - Faith and Brave - C++で遊ぼう

    標準コンテナのsize()メンバ関数の計算量を全てO(1)にしようという提案があり、 賛成多数で通ってしまったらしいです。 つまり、サイズ用のメンバ変数を持たずに実装されていたstd::listやstd::set等に サイズ用メンバ変数が新たに追加されることになります。 組み込み環境でSTL使ってるところがコンパイラをアップデートしてC++0xに対応すると メモリ不足で動かなくなる可能性があるのですが、そのへん考慮されているのだろうか。 以下、N2920の投票結果から 我々は、C++0X working paperにN2923 "Specifying the complexity of size() (Revision 1)"を適用する。 Crowlは、これによってABIが破壊的に変更されるかどうか尋ねた。 Hinnantは、実装に依存すると返答した。いくつかの実装は変わるだろう。 Bro

    C++0x 標準コンテナのsize()の計算量を規定 - Faith and Brave - C++で遊ぼう
    gfx
    gfx 2009/09/02
  • 1