タグ

c++とc++11に関するlizyのブックマーク (33)

  • #Anthony Calandra / モダンC++の機能 | POSTD

    (注:2017/10/25、いただいたフィードバックを元に翻訳を修正いたしました。修正内容については、 こちら を参照ください。) (注:2017/02/07、タグが誤っていたので修正いたしました。) C++11/14/17 概要 C++11/14/17に関する記述や例の多くは、様々なリソース(詳しくは謝辞の項目をご覧ください)を参考にしており、それらを自分の言葉でまとめてみました。 C++17には、以下の新しい言語機能が導入されています。 クラステンプレートに対するテンプレート引数の推論 autoによる非型テンプレートパラメータの宣言 フォールド式 かっこ付き初期化リストを持つauto推論の新しい規則 constexprラムダ インライン変数 入れ子になった名前空間 構造化されたバインディング 初期化子によるステートメントの選択 constexpr if C++17には、以下の新しいライ

    #Anthony Calandra / モダンC++の機能 | POSTD
  • Effective Modern C++

    C++プログラマから絶大な支持を集めるC++界のカリスマ、スコット・メイヤーズが、優れたC++プログラムはどのように書けばよいのかを指南。C++をすみずみまで知り尽くした著者が、効果的かつ堅牢、移植性の高い優れたC++プログラムを書くノウハウを42項目にまとめています。さらに上を目指したい中上級者必携の一冊です。C++11/C++14対応。 出版社より 謝辞 はじめに 1章 型推論 項目1:テンプレートの型推論を理解する 項目2:auto の型推論を理解する 項目3:decltype を理解する 項目4:推論された型を確認する 2章 auto 項目5:明示的型宣言よりもauto を優先する 項目6:auto が期待とは異なる型を推論する場面ではETII を用いる 3章 現代のC++ への移行 項目7:オブジェクト作成時の() と{} の違い 項目8:0 やNULL よりもnullptr を

    Effective Modern C++
  • C++11スマートポインタで避けるべき過ち Top10 | POSTD

    (注:2017/10/25、いただいたフィードバックを元に翻訳を修正いたしました。修正内容については、 こちら を参照ください。) 私は新しいC++11のスマートポインタをとても気に入っています。自分でメモリを管理するのが嫌だと感じる多くの仲間たちにとって、これはいろいろな面で天の助けでした。私の場合、このおかげで新人にC++を教えるのがずっと楽になりました。 しかし、C++11のスマートポインタを幅広く使っていた2年ちょっとの間で、使い方を誤ると、プログラムの効率が落ちたりクラッシュして壊れたりするという事態に何度も遭遇しました。参照用に、以下に例を載せました。 まずはこれらの”過ち”を、簡単なAircraftクラスを例に取って見てみましょう。 class Aircraft { private: string m_model; public: int m_flyCount; weak_p

    C++11スマートポインタで避けるべき過ち Top10 | POSTD
    lizy
    lizy 2016/06/22
  • Top 10 dumb mistakes to avoid with C++ 11 smart pointers - A CODERS JOURNEY

    I love the new C++ 11 smart pointers. In many ways, they were a godsent for many folks who hate managing their own memory. In my opinion, it made teaching C++ to newcomers much easier. However, in the two plus years that I've been using them extensively, I've come across multiple cases where improper use of the C++ 11 smart pointers made the program inefficient or simply crash and burn. I've catal

  • C++11のスレッド、アフィニティ、ハイパースレッディング | POSTD

    背景と導入 何十年もの間、CやC++の標準規格は、マルチスレッディングや並行処理を「その標準の範囲を超えたもの」として扱ってきました。標準規格の目的である”抽象機械”の力が及ばない、”対象依存”という影の世界においてです。メーリングリストやニュースグループの質問には並行処理に関するものが山ほど寄せられましたが、それらにすぐに突き返された回答は「C++はスレッドには関知しません」という何とも冷淡なものでした。この件によって当時のことを思い出す人々は、今後も絶えないでしょう。 しかしC++11の登場で、そんな状況に終止符が打たれたのです。C++標準化委員会は、時代の流れに乗らないと、この先C言語が取り残されてしまうと悟ったのでしょう。彼らはスレッドや同期メカニズム、アトミック操作、メモリモデルなどの存在に、ようやく気付いたわけです。そして標準規格として、C++コンパイラやライブラリのベンダーに

    C++11のスレッド、アフィニティ、ハイパースレッディング | POSTD
  • 【初心者 C++er Advent Calendar 2015 1日目】初心者が C++ を勉強するときに最低限押さえておいたほうがよい C++11/14 の機能 - Secret Garden(Instrumental)

    この記事は初心者 C++er Advent Calendar 2015の1日目の記事になります。 アドベントカレンダーはまだ空きがあるので気になる方は参加してみるとよいと思います。 さて、最近だと C++11/14 で書かれているも増えてきたんですが、やっぱり昔の入門書だとどうしても C++03 が中心になってしまっていてちょっとつらいんですよねー。 と、いうわけで『これから C++ をはじめてみたい!』という人に知っておいてほしい(抑えておいてほしい)C++11/14 の言語機能をちょっとまとめてみました。 C++11/14 を始める前に C++ ではコンパイラやバージョンによって実装されている C++11/14 の機能がまちまちです。 そのため、今回紹介した機能が手元の環境では動作しない可能性もあります。 単に機能を試すだけであれはオンラインコンパイラのWandboxで試してみると

    【初心者 C++er Advent Calendar 2015 1日目】初心者が C++ を勉強するときに最低限押さえておいたほうがよい C++11/14 の機能 - Secret Garden(Instrumental)
  • C++参考書、C++11/14 コア言語を9月に出版予定

    C++11/14のコア言語の参考書。「C++11/14コア言語」が出版社ドワンゴ、販売KADOKAWAとして、9月に出版される。内容は、以下を書籍にしたものだ。内容としてはすでにすべて読むことができる。 EzoeRyou/cpp-book EzoeRyou/cpp14-appendix アマゾンには情報が掲載されたようだ。 Amazon.co.jp: C++11/14 コア言語: 江添 亮: 紙のの他にも、KindleとepubとPDF版も現時点で出す予定だ。また、もちろんのソースコードも公開される。 ソースコードは、Markdown形式だ。もともとこのはXHTMLで手書きされたが、それでは扱いづらいため、これを一度Markdownに変換した上で修正し、pandoc経由でtexに変換してから各フォーマットを生成している。不自由なフォント以外のソースコードは公開できるだろう。

  • メイドでもよく分る右辺値参照 - TXT.TXT

    日2014年 2011年から早3年。C++11も浸透してきた、してきてる、してきて欲しいなという時分ですね 冬椿です。ファミレスに行ったらカレーがメニューから消えてました。こんばんは C++11で追加された機能の一つに『右辺値参照』というものがあります こいつは裏で、つまりライブラリ内の実装などで使われることは多くても 実際使ったことがあるという人は少ないのではないしょうか? 右辺値参照が必要になった経緯 例えばこのような関数があったとする List make_big_List() { List temp; for (size_t i = 0; i < 2011; ++i) temp.push_back(i); return temp; } 2011とはとても大きい数だ ゆえに、tempも非常に大きいことが予想される このコードはC++11以前であると tempの中身をコピーする→tem

    メイドでもよく分る右辺値参照 - TXT.TXT
  • C++11やemscriptenと付き合って1年間の振り返り

    16. 実行速度(現実) asm.js なら Firefox が圧倒的かと思いきや 実行環境によってまちまち・・・ ! グラフィック処理の負担が大きいゲームでは 『このブラウザが最速』とは明言しづらい 17. asm.js の今後 IE, Chrome がサポートするかどうか ! そういう噂はちらほら聞きますが 実現すれば時代の変化に繋がる? ! http://www.infoq.com/jp/news/2015/03/ie-chrome-asmjs http://news.mynavi.jp/news/2015/02/23/270/

    C++11やemscriptenと付き合って1年間の振り返り
  • unique_ptr で今風な C++ コードを書こう!! - @nojima's blog

    はじめに お久しぶりです。KMC OB の id:nojima です。 この記事は KMC Advent Calendar 2014 の10日目の記事です。 昨日は id:murata さんの「受験生応援!Javascriptでひねくれ数列」 でした。 今日は C++ の unique_ptr の話です。 (最初は rvalue について書こうと思っていたのですが、書いてみると unique_ptr だらけになったのでタイトルを変えました。なので、KMC Advent Calendar 2014 に書いてあるタイトルとはい違っています。すみません) 個人的には C++03 ではなく C++11 を使う最大の理由は unique_ptr の存在だと思っています。 例外発生時にももれなく delete してくれる。 生ポインタとパフォーマンスが同じ。(最適化されている場合) 所有権を型として

    unique_ptr で今風な C++ コードを書こう!! - @nojima's blog
  • Effective Modern C++の予約開始 - Faith and Brave - C++で遊ぼう

    EMC++ Exits Publishing Purgatory! - The View From Aristeia Effective Modern C++ - O'Reilly Effective Modern C++ - Amazon.co.jp Scott Meyersの著書『Effective C++』のC++11とC++14対応である『Effective Modern C++ (略称EMC++)』の予約が開始しました。発売は12月4日になっています。 副題は「42 Specific Ways to Improve Your Use of C++11 and C++14」、日語だと「C++11とC++14の使い方を改善する42の方法」といったところでしょうか。

    Effective Modern C++の予約開始 - Faith and Brave - C++で遊ぼう
  • Modern C++ use in Chromium

    This document lives at src/styleguide/c++/c++11.html in a Chromium checkout and is part of the more general Chromium C++ style guide. It summarizes the supported state of new and updated language and library features in recent C++ standards and the Abseil library. This guide applies to both Chromium and its subprojects, though subprojects can choose to be more restrictive if necessary for toolchai

    lizy
    lizy 2014/09/30
    VisualC++対応待ちの機能がいくつか
  • 本の虫: rvalue reference 完全解説

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

  • Effective Modern C++

    Get full access to Effective Modern C++ and 60K+ other titles, with a free 10-day trial of O'Reilly. There are also live events, courses curated by job role, and more.

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

    2.  身内向けです。  Visual C++で使えるC++11の機能を、言語機能、 ライブラリに分けて紹介します。  紹介する機能は私が独断と偏見で選んだ一部です。 全て紹介するわけではありません。  コンパイラやライブラリのバグや部分対応までい くと作業量大変なのでそこら辺は触れません  内容の正しさには気をつけていますが間違えてい る可能性もあります。 3.  サンプルコードは暗黙に必要なヘッダのインク ルード、using namespace std;をしています。  また、イメージとしてのサンプルで、実際には動 かないコードもあります。  ライブラリの初出は所属する名前空間がstd::tr1 ではなくstdになった初めてのバージョンとしま す 4. Visual C++ 10.0 (Visual Studio 2010) VC10 Visual C++ 11.0 (

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

    1. C++11 is 何? C++11 でできること まとめ . ...... More C++11 hatsusato 京都大学理学部もうすぐ 2 回 2013 年 3 月 21 日 1 / 51

    More C++11
  • 日経ソフトウエア5月号 「constexpr」が開くコンパイル時プログラミングの世界 - ボレロ村上 - ENiyGmaA Code

    中3女子です。 だいぶ間が空いたが、日経ソフトウエア5月号の特集記事として 僕の書いた 「constexpr」が開くコンパイル時プログラミングの世界 が掲載されたことを報告する。 「プログラムは実行時にだけ処理が行われるもの」。 そう思い込んでいませんか。それは大きな誤解です。 最新のC++コンパイラを使えば、プログラムを実行する前のコンパイル時に処理を完了できるのです。 それを可能にするC++の機能が「constexpr」です。 特集では、constexprの魅力を紹介します。 日経ソフトウエア Amazon.co.jp: 日経ソフトウエア 2014年 05月号: 日経ソフトウエア: constexprの紹介記事だが、入門から実装技法、Sproutライブラリの紹介からコンパイル時レイトレーシングまで、きわめて幅広い範囲を網羅している。 この内容を8ページ(見開き4ページ)に圧縮する

    日経ソフトウエア5月号 「constexpr」が開くコンパイル時プログラミングの世界 - ボレロ村上 - ENiyGmaA Code
  • 派生クラスの仮想関数には、virtualを付ける必要はない - Faith and Brave - C++で遊ぼう

    クラスで仮想関数を定義したら、派生クラスではその関数に、virtualを付ける必要はありません。付けなくても、自動的に仮想関数になります。 #include <iostream> struct Base { virtual void f() { std::cout << "Base" << std::endl; } }; struct Derived : Base { void f() override { std::cout << "Derived" << std::endl; } }; int main() { Derived d; Base& b = d; b.f(); } 出力: Derived C++03においては、派生クラスでも「この関数はオーバーライドを意図してるんだ」というのを示すためにvirtualを付けることに意義がありました。 C++11ではoverrideキーワ

    派生クラスの仮想関数には、virtualを付ける必要はない - Faith and Brave - C++で遊ぼう
    lizy
    lizy 2014/04/10
    なるほど。あんまり使ってないとどんどん取り残されていくな
  • 本当は怖くないムーブセマンティクス - yohhoyの日記(別館)

    この記事はC++ Advent Calendar 2012の15日目にエントリしています。 内容はC++11「ムーブセマンティクス」の入門記事となっています。 もくじ ムーブセマンティクス再考 シンタックス vs. セマンティクス コピー vs. ムーブ ムーブのもつ2つの意味 C++11のムーブセマンティクス対応 auto_ptrからunique_ptrへ auto_ptrの暗い過去 unique_ptrへの移行 std::moveの役割 ムーブセマンティクスを使おう C++11標準ライブラリとムーブ ムーブ"後"の中身は? ムーブを利用して関数を書く (文のみ約9500字) まえがき To move or not to move: that is the question. ― Bjarne Stroustrup, 2010(改)*1 プログラミング言語C++の新しい国際標準規格*2

    本当は怖くないムーブセマンティクス - yohhoyの日記(別館)
  • C++11lambdaを使おう: Gentlesoft Developer's Blog

    Xcodeを4.4.1にバージョンアップする際何気なくリリースノートを眺めていたら、Apple LLVM complier 4.0でlambdaを含むC++11に準拠とある事を発見したので、早速C++11lambdaを実験してみる事にしました。 lambdaについて λ関数とは何かという事から解説すると稿の目的から外れるのでそれはWikipediaにでも任せて、一般的にプログラミング言語で使われるlambda関数について解説します。一般に関数の機能を持つ言語では、事前に別の場所で定義された関数を別の場所から呼び出して使用します。lambda関数は事前に定義を行わず、関数が実行される文中に直接記述する名前のない関数の事です。文中で定義されたlambdaは変数に格納して別の場所で使用したり、他の関数にパラメータとして渡したりできます。 Objective-CではBlocksとしてこの機能が提