C++に関するwordiのブックマーク (121)

  • C++ で名前付き引数を実現する - Qiita

    は 255 を文字列に変換するようですが、16 と true は何を意味するのでしょうか。 名前付き引数(またはキーワード引数)をサポートする PythonRuby, C#, Swift などの言語では、このような引数の意味を明快に表現できます。 Date(month: 7, day: 8); Date(day: 8, month: 7); ToString(255, radix: 16, upperCase: true); C++ には名前付き引数に相当する言語機能はありません。 それでも、既存の文法を用いて名前付き引数の代わりを実装できます。 Named Parameter Idiom Boost Parameter Library ちなみに、将来の C++ に言語機能として名前付き引数を導入することは提案されています1。 NamedParameter を使う 記事で紹介する

    C++ で名前付き引数を実現する - Qiita
    wordi
    wordi 2016/10/08
    C99で構造体の初期値に名前指定出来るようになったからそれを使うという手も
  • C/C++プログラマのための開発ツール - Cybozu Inside Out | サイボウズエンジニアのブログ

    サイボウズ・ラボの光成です。 先日、社内で主にLinux上でC/C++を用いている開発者向けの講義をしました。 「こんなことができる」と知ってもらい、興味を持てば各自で勉強してもらおうと広く浅くツールを紹介しました。 gtags, ASan, Valgrind, addr2line, cppcheck, SystemTap, perfなどです。 興味があれば講義資料「C/C++プログラマのための開発ツール」をごらんください。 コンパイラオプション 受講者には新人やサイボウズ・ラボユースの学生もいたので基的なところから紹介しました。 C/C++コンパイラを使うときはできるだけ警告オプションをつけるのが望ましいです。 警告が出るのは自分のコードの書き方に不備があることが多いからです。 gccやclangでは-Wall -Wextraは基としてそれ以外にも有用なオプションがあります(C++

    C/C++プログラマのための開発ツール - Cybozu Inside Out | サイボウズエンジニアのブログ
  • 2016年、C言語はどう書くべきか (前編) | POSTD

    (訳注:2016/3/2、いただいた翻訳フィードバックをもとに記事を修正いたしました。) (訳注:著者のMattより、「文中で明言はしていないが、この記事の内容はx86-64 Unix/Linux/POSIXでアプリケーションをプログラミングする場合にフォーカスしている。他のプログラミング領域では、対象とするシステムに応じた(例: 8-bitの組み込みシステム、10年前のコンパイラ、多くの異なるCPUアーキテクチャで動く必要のあるアプリケーション、Win/Linuxでのビルド互換性など)特有のアドバイスが必要」との補足を頂いております。) 以下の文章は2015年の始めに書いたドラフトで、今まで公開していませんでした。私のドラフト用フォルダの中で誰の目も引かなかったため、大部分が書いた時のままです。公開するにあたり、単純に2015年を2016年に変更しました。 必要な修正、改善、苦情があり

    2016年、C言語はどう書くべきか (前編) | POSTD
  • GCC 6にインデントミスの警告機能が追加

    GCC 6にインデントミス警告の機能が追加された。ドキュメントのコミットログは以下の通り。 gcc.gnu.or g Git - gcc.git/blobdiff - gcc/doc/invoke.texi このインデントミスの警告機能は、-Wmisleading-indentationオプションで有効にできる。 if ( condition ) foo() ; bar() ; // 警告 具体的に説明すると、この機能は、if, else, while, forの中の文がブロック文ではなく、かつ、文に続いて同じインデントのif, else, while, forではない文が続く場合に警告する。 例えば、以下のようなコードは、for文のオペランドとしての文に続いて同じインデントレベルの文が続くが、for文なので警告は出ない。 const std::size_t I = 10, J = 10,

    wordi
    wordi 2016/01/11
    実務的な判定してくれるのね
  • とても賢いコンパイラーの逆襲

    The Hacks of Life: The Dangers of Super Smart Compilers Clangの最適化が未定義の挙動を検出してコード片を消し去ってしまったことに引っかかった開発者の嘆き。 今日初めて、RenderFarmのDSF render(global scenaryを作成するのに使っている内部ツール)をClangで最適化コンパイルして実行した。 結果はsegfaultだった。これは驚きだ(そして自身消失だ)。というのも、最適化していないデバッグビルドは問題なく動くし、GCCでコンパイルされた最適化ビルドも正しく動く。-O0ではバグがない(つまり#if DEVコードのバグではない)ので、「最適化は何をやっているんだ」の時間だ。 大量のprintfと試行錯誤の結果、最適化は以下のようなコード片を丸ごとすっ飛ばしていることが判明した。 for(vector<me

    wordi
    wordi 2015/12/21
    「なんでもは出来ないわ、定義されてるものだけ」
  • C++ Advent Calendar 2015 - Adventar

    このカレンダーは C++に関連するなら何でもOKです。 初心者 C++er Advent Calendar 2015とどちらに書けばいい? 明らかに初心者対象の記事は初心者 C++er Advent Calendar 2015にお願いします。でもこちらに初心者向けの内容を書いても大丈夫です。こちらは C++に関連するなら何でも可 です。 ルール このAdvent Calendarは担当日中に書けば良いものとします。つまり12月1日担当の人は12月2日になる前に公開すればOKです。言うまでもありませんが日時間です。UTC+9です。

    C++ Advent Calendar 2015 - Adventar
    wordi
    wordi 2015/12/02
    あとで書く
  • シングルファイル C/C++ ライブラリが便利すぎてやばい - Qiita

    漢は黙ってシングルファイル C/C++ ライブラリですね! シングルファイル C/C++ ライブラリとは, ヘッダファイル .h ひとつだけで機能が実装されているライブラリ(もう少し条件をゆるくして .cc も含む)のことです. header-only とも言われれたりします. このあたりの元祖は nothings 先生 http://nothings.org/ ですね. 最近は github にコードをあげています. https://github.com/nothings/stb シングルファイル系のライブラリまとめ一覧もあります. シングルファイル系が便利すぎてやばいので, 自分でもいくつか作りました. TinyObjloader(Wavefront .obj loader) https://github.com/syoyo/tinyobjloader TinyEXR(OpenEXR

    シングルファイル C/C++ ライブラリが便利すぎてやばい - Qiita
    wordi
    wordi 2015/11/29
    コンパイル時間は犠牲になったのだ・・・、古くから続く依存関係からの解放、その犠牲にな
  • 『Effective Modern C++』勉強会まとめ - Cybozu Inside Out | サイボウズエンジニアのブログ

    サイボウズ・ラボの光成です。 今年の1月から『Effective Modern C++』(Scott Meyers)の読書会を社外の人を含めて月1回のペースで始め、先月末に無事最後まで終わりました。 その感想をざっと紹介いたします。 『Effective Modern C++』(以下EMCと略)はC++11/C++14で追加された様々な新しい機能について紹介するです。 従って、C++の全くの初心者が読むには少々難しいと思います。以前のC++にある程度習熟した人が、新機能の注意点を勉強したいというときに使うとよいでしょう。 には重要な間違いもいくつか指摘されていますので正誤表の確認はしておきましょう。 なおこの9月には日語版(千住治郎訳)も登場しています。こちらは7月時点で原書に見つかっている正誤表が反映されていてうれしいですね。 C++11ではautoの型推論、typedefより高機

    『Effective Modern C++』勉強会まとめ - Cybozu Inside Out | サイボウズエンジニアのブログ
    wordi
    wordi 2015/11/16
    Effective Modern C++勉強会まとめ
  • 優れたモダンなC++を書くのに役立つC++ Core Guidelines

    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が最近リリースされ、重要な変...

    優れたモダンなC++を書くのに役立つC++ Core Guidelines
    wordi
    wordi 2015/10/05
    「モダンな静的解析は lint よりもはるかに優れており、「厄介で複雑なバグを早期に発見し、性能を改善する機会を見つけ、一貫性のあるスタイルおよびライブラリとAPIの適切な利用を促す」という。」
  • UE4とUnrealC++について

    講演動画:https://youtu.be/YXGmiWzHxeo 解析編:https://www.slideshare.net/EpicGamesJapan/ue4-festeast2019-60fpsanalysis/ 2019年10月6日に行われた「UNREAL FEST EAST 2019」における「60fpsアクションを実現する秘訣を伝授」の登壇資料です。 ●公式サイト https://unrealengine.jp/unrealfest/ === 発売中のタイトル「NARUTO TO BORUTO シノビストライカー」に開発中のプロジェクトの事例も加えて、60fpsアクションゲームを実現するためのポイントや、パフォーマンス・チューニングについて解説します。おまけとして「NARUTO TO BORUTO シノビストライカー」のグラフィック面の技術を紹介。

    UE4とUnrealC++について
    wordi
    wordi 2015/09/22
    アクションロジックをLuaに逃がすとかしなくて良いんだ
  • Effective Modern C++ メモ - Qiita

    自分にとっての要点メモ。 Effective C++の著者のScott MeyersによるC++11/14の定番(らしい) ※知らずに買ったら英語だったので、なんとか通読しましたが理解は随所怪しいと思われます。誤りは是非ご指摘ください。 2015/11/02追記: 日語版が出ています。稿は日語訳が出る前に書いたのなので目次の訳は一致しません。ご注意ください。 https://www.oreilly.co.jp/books/9784873117362/ 第1章: 型推論 autoやdecltypeによる型推論はコードの冗長性を減らす強力な機構だが、型推論の動きをしっかり理解していないとmodern C++での効率的なプログラミングはほぼ不可能。 1: テンプレート型推論を理解しろ 関数テンプレートtemplate<typename T> void f(ParamType param)

    Effective Modern C++ メモ - Qiita
    wordi
    wordi 2015/09/21
    Effective Modern C++読後のメモ
  • 【C++】なぜヘッダと実装はわけるべきなのでしょうか(.hに実装を書くことは邪道か)

    私はC++歴3年の学生趣味プログラマーです。 「C++はなぜヘッダと実装を分けなくてはならないのか/そもそも当に分けなければならないのか」という質問です。 C++といえば、ヘッダー部と実装部を.hファイルと.cppファイルに分けることが一般的とされている言語ですが、 これは同じオブジェクト指向言語のC#やJavaにはない特徴です。 そのせいでC++使いたちは今日もcppファイルとhファイルを行ったり来たりしながらコーディングする羽目になっています。(そしてVS使いはF12とCtrl+-を得意気に連打しています。) 私にとってもそれが当たり前になって久しいですが、 時々C++を学び始めたばかりの後輩から「なぜヘッダファイルに実装を書いてはならないのか」「なぜC++は二度も同じコードを書くことを強いるのか」と質問を受けます。 私はそのたびに「実装の隠蔽化」とか「循環参照の危険が云々」とか「そ

    【C++】なぜヘッダと実装はわけるべきなのでしょうか(.hに実装を書くことは邪道か)
    wordi
    wordi 2015/06/09
    C#やJavaは中間言語に吐けるからであって、C++で全部ヘッダに書いたらビルド時間が爆伸びしてコーヒー屋が儲かる
  • 前置インクリメント vs 後置インクリメント | 闇夜のC++

    後置インクリメントにはひと目で遅くなりそうな処理が見て取れますね。 前置インクリメントがインクリメント処理後、単純に自身の参照を返すのに対し、後置インクリメントではインクリメント前に一時オブジェクトの生成、そしてインクリメント後にはその前に生成した一時オブジェクトを値で返しています。 前置と後置では、単純にオブジェクトをコピーして返す分、普通に考えたら後置の方が遅いよね。というのが従来の認識でした。 「C++ Coding Standards -101のルール、ガイドライン、ベストプラクティス」の中でも、特に後置インクリメントの必然性が無い時は迷わず前置インクリメントを使うことが推奨されてきました。 元の値を必要としないときは前置形式の演算子を使おう __C++ Coding Standards (p50) 新たな主張 「ゲームエンジン・アーキテクチャ第二版」の中の一節を紹介します。 しか

    wordi
    wordi 2015/04/17
    後置でストールコスト削減の恩恵を得るのはかなり依存性が高くなりそう、一時オブジェクト生成コスト < ストールコストもクラスが肥大化したら逆転しそうだし。
  • C++ Patterns

    12345678910111213141516171819202122232425262728293031323334 #include <memory> class bar; class foo { public: foo(const std::shared_ptr<bar>& b) : forward_reference{b} { } private: std::shared_ptr<bar> forward_reference; }; class bar { public: void set_back_reference(const std::weak_ptr<foo>& f) { this->back_reference = f; } void do_something() { std::shared_ptr<foo> shared_back_reference = this->b

    wordi
    wordi 2015/04/10
    C++のコードサンプル、アルゴリズムやイディオム等
  • FINAL FANTASY 零式HDにみる 新しいHDリマスター

    KANSAI CEDEC 2015で講演しました"FINAL FANTASY 零式 HD"の開発事例紹介です。 講演時間の都合上、 どうしてもカットせざるを得なかったページを追加した完全版となっています。 PS4/XboxOne のマルチプラットフォームで同時開発され、PSP の描画フローから今世代機での描画フローへの移行及び、採用された以下の技術を中心に具体例を交えた解説をさせていただきました。 ・ディファードレンダリングへの移行 ・物理ベースレンダリングの導入 ・各種光学フィルタ―の導入と特殊なレンダリングパスの解説 ・ローカルリフレクションの採用 フルHD解像度での動作への拘り等、移植の枠を超えた新しいHDリマスターを実現した舞台裏についてプログラマによる解説を交えた内容となっております。

    FINAL FANTASY 零式HDにみる 新しいHDリマスター
    wordi
    wordi 2015/03/21
  • C/C++を高速化する10のコーディングテクニック

    Guides, HowTos and Tips for Technology Geeks - The Geek Stuff The Geek Stuffは「10 Tips for C and C++ Performance Improvement Code Optimization」において、C/C++のコードを高速化するための10のティップスを紹介した。プログラミング言語の学習当初はとりあえず動くものを作ることが最優先だが、次のステップとしてセキュリティやメモリ消費、パフォーマンスなどを加味してコーディングする必要があると指摘されている。ここではパフォーマンスに焦点を絞って説明が行われている。 同サイトで取り上げられているテクニックは次のとおり。 適切なアルゴリズムを使用する メモリ消費という観点からコードの最適化を実施する coutやcinの替わりにprintf系やscanf系の関数を

    wordi
    wordi 2015/01/21
    他には、継承じゃなくポリシー・ポリシークラスを使ってメソッド呼び出しをインライン展開するとか、constexprやテンプレートメタプログラミングでコンパイル時に処理を投げるとか
  • Boost.勉強会感想とか - xyuyuxの日記

    遅ればせながらBoost.勉強会の発表資料をアップしました。 http://cid-31a4fb569979bef3.skydrive.live.com/self.aspx/.Public/BoostAsio.ppt ※以下TLにあった質問ぽいものに対して解答 Q:AsioってCOMポート扱えるの? A:はい、発表資料に書いたとおり扱えちゃいます。 Q:Asioって聞くとDTMのあれ? A:おしいけどちがうw Q:もっとコードにはコメントが欲しかったです A:ごめんなさい。コメント入れることでコードのフォントサイズが小さくなって見えなくなるのが怖かったので削ってしまいました>< Q:v4を「ぶいよん」って読むの? A:「ぶいよん」って言うのは癖です。「ぶいふぉー」が一般的なのかな? Q:deadline_timerの開始はposix_time::seconds のコンストラクタが評価されて

    Boost.勉強会感想とか - xyuyuxの日記
    wordi
    wordi 2014/12/25
    boost.asioについて
  • MinGW - Minimalist GNU for Windows / Issues / #1980 [patch] add missing WSAPOLLFD definition

    wordi
    wordi 2014/12/24
    MinGWでboost.asioを使う時のパッチ
  • スクールガールストライカーズの 内製クライアントエンジン

    近年、ハイスペックなスマートフォン、高品質なネットワークが普及し、それによりモバイルゲームの制作手法やそれを取り巻く環境も変化してきました。スクウェア・エニックスでは、そのような環境の変化に対して、日々新たなチャレンジをし続けています。そして、このようなスピード感溢れる業界の流れには、会社の枠を超えた技術情報の共有、交流が欠かせないと感じております。 そこでこの夏、社内のエンジニア・テクニカルディレクターによる最新のモバイル開発の技術情報や社内モバイルエンジン、開発秘話によるセッションをメインに、スクウェア・エニックス モバイル オープンカンファレンスを開催する運びとなりました。また、セッションの後は登壇する弊社スタッフと直接ディスカッションやフリートークができる場を設けております。この機会にスクウェア・エニックスという会社についても、より詳しく知って頂ければ幸いです。 マネージャー・テク

    wordi
    wordi 2014/07/17
    コンシューマ時代の技術を盛り込んでいる
  • stalei / ArtemisCPP / Downloads — Bitbucket

    wordi
    wordi 2014/07/15
    ArtemisCPP