タグ

C++に関するR2Mのブックマーク (53)

  • C++の例外の使い方を少しだけ深く理解する - いろはの物置き場

    はじめに 半年くらい前に例外処理の気持ちを理解しようと以下の記事を投稿した。この記事はC++の例外の実装であるItanium ABI Zero-cost例外処理についてざっくりその気持ち解説して、C言語でそれっぽい動作をするプログラムを作成した。 例外処理の気持ちを理解する - いろはの物置き場 ただ、この記事ではあくまでの例外を送信したときの挙動の話であって、C++の言語機能的な例外の話はほとんど取り扱っていない。そこで、記事ではC++の例外処理の気持ちをなんとなくで理解するために言語機能に関する部分を全般的に扱う。なお、記事は例外処理の存在を知っていて使ったことがある(C++でなくてもいい)ことを前提としており、入門記事でも何でもない。また、C++といいつつも扱っているのはGCCの動作確認に近い。 記事を執筆するにあたって、以下のようにして導入したGCC 15.2を利用している。

    C++の例外の使い方を少しだけ深く理解する - いろはの物置き場
    R2M
    R2M 2025/12/10
  • Reddit - Please wait for verification

    R2M
    R2M 2025/12/01
  • BigGo ニュース

    Netflix が子供向けアプリ「Playground」をリリース:サブスクリプションに含まれる広告なしのオフラインゲームを提供 Netflix は、子供向け専用ゲームアプリのリリースにより、画面の枠を超えてインタラクティブな遊びの領域へとその活動範囲を広げています。この動きは、ストリーミング大手が推進するゲーム戦略の大きな前進であり、厳選された安全でサブスクリプションにバンドルされた体験を提供することで、より若い層へと焦点を移しています。新しいアプリ「Netflix Playground」は、娯楽と軽い教育的活動を融合させ、家族が人気キャラクターと触れ合う新しい方法を提供することを目的としています。「Netflix Playground」は、8歳以下の子供を対象に設計された新しいスタンドアロンアプリです。iOS と Android の両方で利用でき、別途購入する必要はなく、標準的な Ne

    R2M
    R2M 2025/12/01
  • テンプレートの実体化の実装方法とODR違反について

    問題 以下のC++コードを考える。 int plus( int a, int b ) { return a + b ; } double plus( double a, double b ) { return a + b ; } このC++コードは、int型とdouble型以外、コードはほぼ同じである。 しかし、ほとんどのコンピューターではint型とdouble型は操作方法が異なるため、この2つの関数は、全く別のコンピューターが処理できるコードに変換される。 ところで、古典的なC言語やC++コンパイラーの実装方法として、ソースコードのファイルをそれぞれ、一つ一つの翻訳単位としてコンパイルし、翻訳単位ごとにオブジェクトファイルを生成し、リンカーで複数のオブジェクトファイルを結合(リンク)して、単一のプログラムを生成するというものがある。 よくある実装では、オブジェクトファイルは、その翻訳単位

    R2M
    R2M 2025/08/01
  • [C++] std::atomicの待機・通知APIと条件変数 - 地面を見下ろす少年の足蹴にされる私

    std::atomicの待機・通知API std::condition_variable 比較 シグナルセーフ? 参考文献 std::atomicの待機・通知API C++20ではstd::atomic(std::atomic_flag/std::atomic_ref)に待機と通知を行うメンバ関数が追加され、std::atomicオブジェクトによってスレッド間の同期がより簡単かつ効率的に行えるようになります。 std::atomic<int> shared_val{}; // C++20から0で初期化される void wait_thread() { while (...) { // 通知スレッドからの通知を待機する const auto old = shared_val.load(); shared_val.wait(old); int val = shared_val.load(); .

    [C++] std::atomicの待機・通知APIと条件変数 - 地面を見下ろす少年の足蹴にされる私
    R2M
    R2M 2025/03/18
  • C++創始者Stroustrup氏、メモリ安全性向上へ緊急行動を呼びかけ

    2025年3月2日、C++言語の創始者Bjarne Stroustrup氏が、C++言語を「深刻な攻撃」から守るため、C++コミュニティに支援を呼びかけた。 背景には、過去数年間でサイバーセキュリティ機関や技術専門家がC/C++のメモリ安全性の欠点を指摘し、RustGo、C#などの代替言語の使用を推奨してきたことがある。 2024年10月、米国サイバーセキュリティ・インフラストラクチャセキュリティ庁(CISA)は、2026年1月1日までにメモリ安全でない言語を使用している製品のメーカーに対し、メモリ安全性のロードマップ作成か、メモリ安全な言語への移行を求めるガイダンスを発表した。 Stroustrup氏は2025年2月7日に「C++標準委員会(WG21)へのノート」を発表し、Profilesと呼ばれるメモリ安全性フレームワークを提案した。 一方、TrapCプロジェクトを主導するRobin

  • かつての当たり前が通用しない? Modern C++ではやらないこと

    21世紀に入ってまったく別物と言えるプログラミング言語に進化したC++連載では、Modern C++と称されるC++について、Modern C++らしい言語仕様をピックアップし紹介していきます。第1回は、かつてのC++の当たり前が今では通用しないことを紹介します。たとえばインスタンスの生成にnewを、破棄にdeleteをというのが常道でしたが、もはやそれらは非推奨なのです。導入として、このようなかつては常識だったことが非推奨になっているという状況を、いくつかのトピックスを通じてお話しします。 はじめに C言語から派生したオブジェクト指向プログラミング言語であるC++は、21世紀に入ってまったく別物とも言えるプログラミング言語に成長していきました。それは、Modern C++と称されています。1990年代にC++を触っていたプログラマが現在の仕様を知れば、隔世感に苛まれるのではないでしょ

    かつての当たり前が通用しない? Modern C++ではやらないこと
    R2M
    R2M 2022/12/02
  • ゲーム開発者のための C++11~C++20, 将来の C++ の展望 - CEDEC2020 - Speaker Deck

    ゲーム開発者のための C++11~C++20, 将来の C++ の展望 【CEDEC ページ】https://cedec.cesa.or.jp/2020/session/detail/s5e8327a52702c.html 【解説付きの書籍版 📚】https://zenn.dev/tetsurom/…

    ゲーム開発者のための C++11~C++20, 将来の C++ の展望 - CEDEC2020 - Speaker Deck
    R2M
    R2M 2020/09/03
  • 江添亮のC++入門

    書はプログラミングの経験はあるがC++は知らない読者を対象にしたC++を学ぶためのである。書はすでに学んだことのみを使って次の知識を説明する手法で書かれた。C++コンパイラーをC++で書く場合、C++コンパイラーのソースコードをコンパイルする最初のC++コンパイラーをどうするかというブートストラップ問題がある。書はいわばC++における知識のブートストラップを目指しただ。これにより読者はを先頭から読んでいけば、まだ学んでいない概念が突如として無説明のまま使われて混乱することなく読み進むことができるだろう。 C++知識のブートストラップを意識した入門書の執筆はなかなかに難しかった。ある機能Xを教えたいが、そのためには機能Yを知っていなければならず、機能Yを理解するためには機能Zの理解が必要といった具合に、C++の機能の依存関係の解決をしなければならなかったからだ。著者自身も苦し

    R2M
    R2M 2019/09/20
  • C++標準化委員会、ついに文字とは何かを理解する: char8_t - Qiita

    Javascriptとかいう変態は置いておいて少なくともC++でstringのlengthといったらこれですね。 code points 何コードポイントか、という数え方です。 U+0061, U+0928, U+093F, U+4E9C, U+10083 というのは5コードポイントですね。 ちなみにUTF-32のときのCode Unit数と同一です。 grapheme cluster 何書記素クラスタか、という数え方です。 (aनि亜𐂃) 人間が見たときに一文字と解釈するかという考え方です。 例えばनिはコードポイントで見るとU+0928(न), U+093F(ि)という2コードポイントで表されます。しかしこれを別々の文字とは人間は解釈せず、一文字と認識します。 他の例も見てみましょう。 प,ू,र,ी,त,ि 👩‍❤️‍💋‍👨 kiss: woman, manとして登録されてい

    C++標準化委員会、ついに文字とは何かを理解する: char8_t - Qiita
  • C++に提案されている静的例外

    C++に静的例外が提案されている。 [PDF] P0709R1: Zero-overhead deterministic exceptions: Throwing values 例外はそのパフォーマンスへの影響が懸念され、一部のC++プロジェクトではコンパイラーオプションによって例外自体が無効化されていた。 これは由々しき事態だ。というのも、例外は標準C++の機能の一部であり、標準ライブラリは例外の存在を前提にして設計されている。例外が無効化されているということは、それはもはやC++ではない。C++風の別言語を使っていることになる。 なぜ例外は忌避されるのか。例外のパフォーマンスが非決定的だからだ。例外の実装はスタックからの確保ではなくヒープからの動的なメモリ確保が必要で、例外のキャッチにはRTTIによる型情報の比較が必要だ。 ifとgotoによるエラー処理のパフォーマンス特性は決定的に見

    R2M
    R2M 2018/07/11
  • Amazon.co.jp: 江添亮の詳説C++17: 江添亮: 本

    Amazon.co.jp: 江添亮の詳説C++17: 江添亮: 本
    R2M
    R2M 2018/01/20
  • ドラゴンボールZ ドッカンバトル | バンダイナムコエンターテインメント公式サイト

    AppleAppleのロゴ、App Storeは、米国およびその他の国で登録されたApple Inc.の商標です。 ※Google Play は Google LLC の商標です。 ©バード・スタジオ/集英社・東映アニメーション ©Bandai Namco Entertainment Inc. ※画面は開発中のものです。

    ドラゴンボールZ ドッカンバトル | バンダイナムコエンターテインメント公式サイト
    R2M
    R2M 2017/11/16
  • 江添亮の詳説C++17

    はじめに 書は2017年に規格制定されたプログラミング言語C++の国際規格、ISO/IEC 14882:2017の新機能をほぼすべて解説している。 新しいC++17は不具合を修正し、プログラマーの日々のコーディングを楽にする新機能がいくつも追加された。その結果、C++の特徴であるパフォーマンスや静的型付けは損なうことなく、近年の動的な型の弱い言語に匹敵するほどの柔軟な記述を可能にしている。 人によっては、新機能を学ぶのは労多くして益少なしと考えるかもしれぬが、C++の新機能は現実の問題を解決するための便利な道具として追加されるもので、仮に機能を使わないとしても問題はなくならないため、便利な道具なく問題に対処しなければならぬ。また、C++の機能は一般的なプログラマーにとって自然だと感じるように設計されているため、利用は難しくない。もしC++が難しいと感じるのであれば、それはC++が解決すべ

    R2M
    R2M 2017/10/15
  • 2011-08-01 - valgrind 論文読んだメモ - 兼雑記

    時々 valgrind はオーパーツだとかそういう主張をしてたりします。コードとか論文とかチラ見くらいはしてたのですが、まあちゃんと眺めてみたのでメモ。 Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation http://valgrind.org/docs/valgrind2007.pdf 1. イントロ 1.1 DBA and DBI Dynamic binary analysis って種類のツールがあるんですよ、と紹介。その手のツールは Dynamic binary instrumentation で実装されてることが多いですよ、と。つまり実行時にコード埋めるって話。 DBI ってのはすげー汎用性あるんですけどイマイチ注目されてなくてよろしくない、と。 1.2 Shadow Value Tools an

    2011-08-01 - valgrind 論文読んだメモ - 兼雑記
  • C++とfinally - 株式会社CFlatの明後日スタイルのブログ

    こんにちは、株式会社CFlatです。 あれほど何でも取り込むC++C++11になってもいまだに採用しない言語仕様で、他の言語にはよく採用されているもの。 幾つかありますが、代表的なものがGC(ガベージコレクション)とfinallyブロックでしょう。 ただ今回は、GCについてはTechnical Reportに既に出ているようですし、Boehm GCというライブラリ(c.f. http://homepage2.nifty.com/aito/gc/gc.html)もありますので割愛します。ちょっとfinallyについて見ていきましょう。 finally文の使い方 finally文は、例えば以下のように使われます。 try { std::cout << "例外を投げるかもしれない処理" << std::endl ; return ; } catch (...) { std::cout << "

    C++とfinally - 株式会社CFlatの明後日スタイルのブログ
  • 組み込みシステム上でのC++ | POSTD

    去年の10月、私が所属している 会社 の部署で、組み込みファームウェアの開発をC言語からC++に切り替えました。C++のクラス、リソースの自動クリーンアップ、パラメータ多相、そして強化された型安全性などは、汎用OSをデスクトップ機で稼働している時と同様、リアルタイムOS(RTOS)やベアメタル上でも便利です。C++を使えば、安全で表現豊かなファームウェアを書くことができます。 しかしC++のこの自動的な魔法は諸刃の剣とも言えます。いくつかの機能は、組み込み環境 ^(1) には搭載したくないシステムのファシリティに依存するからです。ツールチェーン周りをどうするかも厄介です。 memcpy やアトミック操作、ハードウェア固有の浮動小数点関数などの重要なファシリティが提供されるので、 libgcc と libstdc++ を完全に破棄するのではなく、特定の部分を避けて使わなくてはなりません。 こ

    組み込みシステム上でのC++ | POSTD
    R2M
    R2M 2017/04/08
  • Rust開発者のためのC++入門書:所有権と借用について | POSTD

    今日、ソーシャルサイト「reddit」を見ていたら、“ Rustの基礎を学んでからC++を始める場合 、何を勉強すればいいか”と問う投稿があり、私は自分のブログを復活させ、その中で質問への答えを書いたら面白いのではと考えました。 私にはRustを学んだ後にC++を扱う仕事に就いた経験があるため、Rustの経験を持つ人がC++に移行していく様子をまとめてみたいと思ったのです。 稿はC++の構文と特徴を既に知っていて、RustからC++の世界に移行する方法に興味を持っている読者を対象とします。 しかし、私は全てに精通しているわけではないので、稿では所有権(ownership)、借用(borrowing)、ライフタイム(lifetime)に焦点を当てて説明していきます。 所有権と移動 Rustの一番大きな特徴は所有権です。所有権は、プリミティブ型ではない値に対するデフォルトの動作として、コピ

    Rust開発者のためのC++入門書:所有権と借用について | POSTD
    R2M
    R2M 2017/03/15
  • ISUCON6予選をC++で参加して予選通過した話

    チーム名「Anago」で @iwiwi, @zuisou, @imos の 3 人で ISUCON6 予選に参加し,幸運にも 1 日目 3 位で通過することができました.@iwiwi が「ISUCON に C++ で参加したい!」と言っており,それを全力バックアップをしようと思ったのがきっかけの参加でした. 前日までにやったこと C++ で全てを書けば最速になるのは自明なのですが,C++ は参考実装として与えられていないだけではなく,HTTP サーバを書くことを想定していない言語のため準備には苦労しました. C++ で HTTP サーバを書く方法は,既存の Web サーバ (e.g., nginx, Apache, H2O) のプラグインを書いて実装するか,FastCGI として実装するか,フルスクラッチで書くかの選択肢が考えられますが,プロセス間通信を避けて爆速にしたかったので,事前に

  • Bjarne Stroustrupのプログラミング入門書の査読の感想

    C++の設計者ストラウストラップによるプログラミング入門書の最新版日語訳が、9月に @asciidwango から出版されます。 https://t.co/ssT9ubfXtT — アスキードワンゴ編集部 (@asciidwango) August 5, 2016 アスキードワンゴ編集部からBjarne StroustrupのProgramming -- Principles and Practice Using C++というの第二版の邦訳が出版される。初版は翔泳社が出していたが、C++14に対応した改訂版の第二版の版権が空いていたので、アスキードワンゴから出すための作業をしていた。私は邦訳の査読をした。 今年になってから半年は、ずっとこのの査読をしていた。このためにC++標準化委員会の最新の文書を把握する作業が数ヶ月ほど滞った。そして、この仕事は、私がドワンゴに入社して以来、最悪の

    Bjarne Stroustrupのプログラミング入門書の査読の感想
    R2M
    R2M 2016/08/07