タグ

C++11に関するiwadonのブックマーク (35)

  • C++11 alignas/alignof メモリアライメント | ホイール欲しい ハンドル欲しい

    SSE 等の SIMD 命令やキャッシュを意識したプログラムではメモリのアライメントを 考慮する必要があります。 これまではコンパイラ毎の拡張命令に頼っていましたが、 C++11 では言語仕様に含まれるようになりました。 メモリアクセスの同期命令も含めて、低レベルなメモリ命令を積極的に取り込んでいる印象です。 CC alignas alignof ----------------------------------------------------------------- VisualC++ __declspec(align(byte)) __alignof(type) gcc/clang __attribute__((aligned(byte)) __alignof__(type) C++11 alignas(byte) alignof(type) alignas はメモリ配置時のア

    iwadon
    iwadon 2014/03/11
  • C++11での自作アロケータに必要な最小コード - Faith and Brave - C++で遊ぼう

    C++11では、std::allocator_traitsというアロケータアクセスの中間インタフェースが用意されたおかげで、自作アロケータに必要な実装がだいぶ減りました。 自作アロケータに必要な最小コードは、以下のようになります。 要素型value_type 特殊関数(デフォルトコンストラクタ、コピーコンストラクタ、ムーブコンストラクタ) 別な要素型のアロケータを受け取るコンストラクタ allocate()メンバ関数。(hintパラメータはあってもなくてもいい) deallocate()メンバ関数 operator==とoperator!= サンプルコード: #include <new> template <class T> struct MyAllocator { // 要素の型 using value_type = T; // 特殊関数 // (デフォルトコンストラクタ、コピーコンスト

    C++11での自作アロケータに必要な最小コード - Faith and Brave - C++で遊ぼう
    iwadon
    iwadon 2014/02/14
  • C++11参考書:C++11の文法と機能

    書は2011年に制定されたC++11の標準規格の一つ後のドラフト、N3337に準拠するC++11の参考書、C++11の文法と機能の電子書籍です。

    C++11参考書:C++11の文法と機能
  • C++11: Syntax and Feature

    C++11の文法と機能(C++11: Syntax and Feature) Copyright (C) 2013 江添亮. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GN

  • GitHub - EzoeRyou/cpp-book: C++11 textbook

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - EzoeRyou/cpp-book: C++11 textbook
  • C++11参考書の公開:C++11の文法と機能

    C++11の参考書をGitHubで公開する。 GitHub: EzoeRyou/cpp-book GitHubからzipでダウンロード GitHub Pagesでの閲覧:C++11の文法と機能 序 書はC++11のコア言語の文法と機能を、標準規格書に従って解説したものである。正式なC++規格書として発行された後の、ひとつ後のドラフト規格、N3337 を参考にしている。ドラフト規格を参考にした理由は、正式なC++規格書は、個人での入手が煩わしいためである。読者に入手が困難な資料を元に記述された参考書は価値がない。そのため、読者が容易に入手できるドラフト規格のうち、正式なC++規格書とほとんどかわらないN3337を参考にした。 書の対象読者は、C++を記述するものである。C++実装者ではない。そのため、サンプルコードを増やし、冗長な解説を増やし、C++コンパイラーを実装するための詳細な定義

  • Visual C++で使えるC++11

    2014年6月に開催されたSSII2014(http://www.ssii.jp/)のチュートリアル講演用資料です. 使用したコード等はこちら. https://github.com/norishigefukushima/SSII2014 アブストラクト 「CPUのクロック数が年月とともに増加する時代は終わり、プログラムの高速化をCPUの性能向上に任せることのできるフリーランチの時代は終わりを迎えています。しかしムーアの法則はいまだに続いており、CPUはマルチコア化、SIMD化という形で高性能化が続いています。チュートリアルでは、計算コストの高い画像処理を高速化するために、CPUの能力をあますことなく引き出す、マルチコアプログラミング、SIMDプログラミングを解説します。」

    Visual C++で使えるC++11
  • Mac で C++11の機能を使いながらGTestでテストする - 反原発プログラマのブログ

    C++11の機能を使いたいので 'clang++ -std=gnu++11 -stdlib=libc++' の設定でコンパイルしているのだが、この設定ではgtestがコンパイルできない。gtestは最新の1.6.0。で仕方がないのでinclude/gtest/internal/gtest-port.hを編集。参考にしたのはここ。ただし、こちらはgtestをsvnで取ってきているようでそのままではpatchがあたらない。まあ少しの修正だったので手で直した。で他の人も使えるようにパッチ作成。 *** 1.6.0/gtest-port.h 2013-02-12 16:16:45.000000000 +0900--- c++11support/gtest-port.h 2013-02-12 15:49:02.000000000 +0900****************** 244,249 ***

    Mac で C++11の機能を使いながらGTestでテストする - 反原発プログラマのブログ
  • C++11 時代のクラス設計に関する提案 - 野良C++erの雑記帳

    先日,ついに C++11 の主要な機能を一通り実装した GCC-4.8.1 がリリースされた. もう一方の主要な C++ コンパイラである Clang++ でも C++11 の機能は既に全て実装されており, 来る 6/05 に最新版の Clang-3.3 がリリースされ, C++11 対応が完了する見通しだ.*1 このような状況においては, C++11 への乗り換えを検討し始めているプロジェクトも多いことだろう. さて, C++11 では, C++98/03 との互換性を保ちつつ,クラス設計に大きな影響を齎す変化が採用された. すなわち, Move Semantics である. この登場により, C++11 で「良い」とされるクラス設計は, C++98/03 時代とは若干 異なったものとなる. そこで,この記事では,筆者が C++11 において「良い」と考えているクラス設計を提案してみたい

    C++11 時代のクラス設計に関する提案 - 野良C++erの雑記帳
  • 『C++ポケットリファレンス』という本を書きました! - Faith and Brave - C++で遊ぼう

    C++11対応の『C++ポケットリファレンス』というを書きました。 C++ポケットリファレンス - Amazon C++ポケットリファレンス - 技術評論社 書は、標準C++のリファレンスです。「何がしたい」から「どうやって」を調べる、逆引きリファレンスの形式をとっています。 ポケットリファレンスはシリーズもので、これまで多くの言語やフレームワークのが出ていますが、縁あって技術評論社さんからC++版のお話をいただき、書かせてもらいました。 今回は、私を含む、C++コミュニティのメンバ6人で書きました。 書はライブラリの使い方を主題として扱いますが、C++11に関する日語書籍はこれが初となる実情があるため、言語の基文法も力を入れて書いています。そのため、書はライブラリのリファレンス書としてだけでなく、C++の入門書として使うこともできると思います。 「ポケットリファレンス」と

  • C++11のfinalとoverride

    C++11には、finalとoverrideがある。クラスにはfinalを指定できる。virtual関数にはfinalとoverrideを指定できる。 クラスにfinalを指定すると、そのクラスを基クラスに指定できなくなる。 struct final_class final { } ; // エラー、final_classは基クラスに指定できない struct error : final_class { } ; virtual関数にfinalを指定すると、そのvirtual関数をそれ以上オーバーライドできなくなる。 struct base { virtual void f() { } } ; struct derived : base { virtual void f() final { } } ; struct error : derived { // エラー virtual voi

    iwadon
    iwadon 2013/04/07
  • 本の虫: GNU/LinuxのC++11でプログラミングの常識がひっくりかえった

    C++11のコア言語を詳細に解説するを書いている。ライブラリについては書の範疇ではないし、どちらかと言えばコア言語の方が好きなのだが、ライブラリの解説だってやってやれないことはない。せっかくなのでC++11の範囲で非同期処理について書くことにしよう。 例えばあるファイルを全部メモリ上に読み込むような処理を考えよう。ファイルの読み込みは時間がかかる。残念ながら、まだmmapのようなmemory mapped fileは標準ライブラリにないし(あったとしてもこの問題には不適だし)、非同期I/Oもない。そのため、ファイルの読み込みは別のスレッドで行い、結果を元のスレッドに返したい。 これは非常に難しい問題である。別のスレッドを作ってその終了を待たなければならないどころか、その別のスレッドから何とかしてデータのやり取りをしなければならないのだ。それだけではなく、ファイルを読み込むという処理も書

  • explicit でキャスト演算子の暗黙の型変換を抑制する - C++でゲームプログラミング

    C++ ではキャスト演算子(operator T)を使用することで型から型へ暗黙の型変換を行うことが出来ます。 struct X{ constexpr operator int() const{ return value; } int value; }; constexpr X x{42}; static_assert(x == 42, ""); constexpr int n = x; この時に C++11 では explicit を付けることで暗黙の型変換を行えないようにすることが出来ます。 [ソース] struct X{ constexpr explicit operator int() const{ return value; } int value; }; int main(){ constexpr X x{42}; // 暗黙の型変換は行えない。 // constexpr in

    explicit でキャスト演算子の暗黙の型変換を抑制する - C++でゲームプログラミング
  • C++11 スマートポインタの話 - ここは匣

    C++にはガーベジコレクタが言語的には存在しないので、動的に確保したオブジェクトのメモリの管理はプログラマが責任を持って管理しなければ、メモリリーク・リソースリークなどの問題を生じてしまいます。 今時のプログラマはこうした問題を引き起こすリスクを減らす為に、記述ミスの起こりやすい生のポインタを使い自力でnewとdeleteを記述する事を避けて、安全なスマートポインタ、即ちオブジェクトの寿命により自動的にメモリ解放を行う便利なポインタを利用するべきです。 しかし、スマートポインタと言っても種類が幾つかあり、落とし穴も存在するのでどういった状況でどれを利用するのが良いのかを考察してみます。 Dynamic memory managementを見てみても C++11から随分増えていますね http://en.cppreference.com/w/cpp/memory std::auto_ptr

    C++11 スマートポインタの話 - ここは匣
    iwadon
    iwadon 2013/03/21
  • rvalue reference 補足

    前回、rvalue reference 完全解説なる記事を書いた所、ある程度の反響を得た。このような個人のブログでは、数人が思う所を書けば、まあ、ある程度の反響と言って差し支えないのである。 しかるに、皆rvalue referenceの理解に苦しんでいる様子だ。果たしてあの解説が至らなかったのであろうか。しかし、あの解説は、これ以上ないくらい簡単に書いたはずである。 実際、value referenceは、名前の通りのrvalueへのreferenceに過ぎぬのだし、std::move()とstd::forward()は、キャストに過ぎぬのだ。std::move()は、rvalueへのキャストであり。std::forward()は、lvalueをlvalueへ、rvalueをrvalueへキャストするのである。それだけのことなのである。 しかし、現実に理解に苦しんでいる者がいる。これは一

  • 本の虫: rvalue reference 完全解説

    目的 この記事は、C++0xのrvalue referenceを完全に解説せんとする目的を以て書かれた。サンプルコードは最小に留め、エラー処理等は省いた。この記事さえ読めば、今日からrvalue referenceを恐れることなく使う物のC++0xプログラマになれるだろう。 lvalueとrvalueについて Cの時代では、lvalueとrvalueの違いは、代入演算子の左側か右側かという違いだけであった。つまり、left hand value, right hand valueの略である。従って、訳語も、左辺値、右辺値であった。C++においては、これはもはや正しくはない。従って、右辺値、左辺値というのも、誤訳である。それ故に、ここでは、これ以上、左辺値、右辺値という名称を使用しない。 誤解を恐れずにいえば、lvalueとは、明示的に実体のある、名前付きのオブジェクトであり、rvalue

  • cpp-netlib: The C++ Network Library

    The project aims to build upon the latest C++ standard (currently C++11) to provide easy to use libraries for network programming. We use the latest compiler versions and features with an eye on pushing the boundaries on leveraging what's available in C++. Currently the library contains an HTTP client and server implementation, a stand-alone URI library, a network message framework, and some concu

  • Microsoft が C++11 準拠を拡大した新コンパイラを発表

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Microsoft が C++11 準拠を拡大した新コンパイラを発表
    iwadon
    iwadon 2012/11/08
    『2017 年のリリースが予定される C++17』
  • ここ数ヶ月のC++11コンパイラー事情

    ここ数ヶ月のC++11のコンパイラー事情はどうなっているのか。これが、あまり大規模な変化はない。もちろん、細かいバグ修正などはあるにしても、大胆な機能実装はない。これは、gccもclangも、C++11のある程度の機能を実装し終えたからである。まだ細かい部分でいくつか規格との齟齬があるものの、大方はいますぐ使えるようになっている。 現在のところ最も規格準拠度に厳格な姿勢を見せているClangでは、コア言語で実装していない機能はわずかに二つ。AttributesとInheriting Constructorsである。 Clang - C++98 and C++11 Status Inheriting Constructorsは、見た目以上に実装が難しく、また規格の文面も曖昧で、非常に難儀しているそうだ。また、実装したいと思う開発者もいない。 Attributesは、規格や実装にさしたる問題は

    iwadon
    iwadon 2012/08/20
  • 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