タグ

C++に関するiwwのブックマーク (338)

  • Adjust Variable Tracking Assignment Length

    iww
    iww 2021/03/08
    気にしなくてもいいやつっぽい
  • @sileaderのマイページ - Qiita

    posted articles:C++:50%C++11:40%Python:30%プログラミング言語:30%プログラミング:20%

    @sileaderのマイページ - Qiita
    iww
    iww 2021/02/01
  • C++のenable_shared_from_thisを使う - 株式会社カブク

    はじめに カブクの甘いもの担当の高橋憲一です。 相変わらず日々甘いものをしながらC++でZ軸を触るコードを書いています。最近のお気に入りはローソンの「あんこ天国」という名前のあんぱんです。中のあんこが透けて見えるほど薄い生地にたっぷりのあんこが包まれていて満足度が高く、べるとコーディングが捗ります 🙂 スマートポインタを使っていて遭遇した問題 C++プログラマにとってstd::shared_ptrやstd::unique_ptrなどのスマートポインタを使うことは、もはや疑う余地のないことではありますが、こんな場面に遭遇したことはありませんでしょうか。 std::make_shared<Foo>()でstd::shared_ptrとして生成したあと、そのFooのクラスの中で自分自身(this)をどこかのコンテナに入れたい。 そんな状況を作り出した自分のコード設計が悪いのかと最初は考えあ

    C++のenable_shared_from_thisを使う - 株式会社カブク
    iww
    iww 2021/01/19
  • basic_string_view - cpprefjp C++日本語リファレンス

    namespace std { template <class CharT, class Traits = char_traits<CharT>> class basic_string_view; using string_view = basic_string_view<char>; using u8string_view = basic_string_view<char8_t>; // C++20から using u16string_view = basic_string_view<char16_t>; using u32string_view = basic_string_view<char32_t>; using wstring_view = basic_string_view<wchar_t>; } 概要 std::basic_string_viewは、文字列の所有権を保持せず、

    iww
    iww 2020/09/29
    気を付けないとすぐバグるやつ
  • CLion 2020.2.1 Bug-fix Update | The CLion Blog

    iww
    iww 2020/09/11
  • Endless Loop false positive in move assignment : CPP-21061

    iww
    iww 2020/09/11
  • 違法な職務質問をされたので東京都を訴えた裁判の控訴審は棄却、理由は突然に

    職務質問裁判の控訴は棄却された。判決文は以下から読むことができる。 https://github.com/EzoeRyou/calling-110-is-suspicious 2年前の7月3日、職務質問を受けた。 警察官に職務質問をされた話し この職務質問は明らかに違法であると感じたので、弁護士に相談の上、東京都に対して国賠訴訟を起こした。警察官というのは各都道府県の下に位置する行政組織なので、警察を訴えるというのは、その警察の所属する都道府県を訴えるということになる。 一審判決は請求棄却。理由としては、「最初の10分間は不審事由がないが、刃物などの危険物を入れることができるリュックを背負っていたから声をかけ10分間その場にとどめて話をするのは違法ではない。このとき110番通報を要請したことは不審事由にあたりその後の1時間20分の職務質問は不審事由が存在するために合法である」というわけのわ

    iww
    iww 2019/12/09
    『最高裁で「今回の警官側の行動はすべて適法」の判決が出るかも知れませんよ。』 『C++の仕様に例えるならば、一時の感情や欲にまかせて後々、言語上重大な欠陥になるような仕様を標準化してしまう』
  • 江添亮のC++入門

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

  • printfに4285個アスタリスクをつけるとclang++が死ぬ - Qiita

    def check(n) s = "*"*n f = open("test.cpp","w") f.puts <<EOS #include <cstdio> int main(){ (#{s}printf)("Hello World\\n"); } EOS f.close() return system("clang++ test.cpp") end check(ARGV[0].to_i) $ ruby check.rb 10000 clang: error: unable to execute command: Illegal instruction: 4 clang: error: clang frontend command failed due to signal (use -v to see invocation) Apple LLVM version 10.0.1 (clang

    printfに4285個アスタリスクをつけるとclang++が死ぬ - Qiita
    iww
    iww 2019/08/21
    気を付けよう
  • C++の初期化は分かりにくい2 - ぷろみん

    前の C++の初期化は分かりにくい - ぷろみん newしてもゼロクリアされる訳じゃない struct Foo{ int a; }; // デフォルト初期化、aは不定 auto foo1 = new Foo; // 値初期化、aは0 auto foo2 = new Foo(); 省略可能なのでまさかと思ったら、やっぱりnewにもデフォルト初期化と値初期化がありました。 気にせずに使ってしまっていたので意識していきたいです。

    C++の初期化は分かりにくい2 - ぷろみん
    iww
    iww 2019/08/21
  • 日本のコンピュータ情報 : 富士通

    コンビニに行けば常に商品がずらりと並び、ECで買った商品は翌日届きます。消費者の利便性を優先して設計されてきたサプライチェーンは、過剰生産による資源ロスや、仕入れにかかる不均衡など、その綻びがいま深刻化しています。企業や消費者の共感を得ながら、サプライチェーンを再設計する方法を模索して、顧客体験設計の最前線を知るビービットの藤井保文氏と富士通 SVP 神 俊一が対談します。

    日本のコンピュータ情報 : 富士通
  • オブジェクト指向プログラムでgetter/setterメソッドを使わなければならない10の理由

    オブジェクト指向プログラムで getter/setterメソッドを使わなければならない 10の理由 福盛 秀雄 fukumori at m.ieice.org JavaC++などのオブジェクト指向言語でプログラムを書いているときに、単純なメンバ変数を参照したり操作するために anObject.getX() [以後これをgetterメソッドと呼ぶ] とか anotherObject.setY(y) [以後これをsetterメソッドと呼ぶ] と書くのはなぜだろうと思ったことはないだろうか? int型の変数ひとつを操作するのになぜわざわざメソッドを定義するのだろう? 単純に代入を使えばいいじゃないか? この文章はそんなあなた(かつての僕も含む)が、getter/setterメソッドを使うべきである理由についてまとめたものである。 ということで早速論へ。 1. クラス内部のデータ表現を変えた場

    iww
    iww 2019/06/17
    列挙された理由がそのまま、今となってはgetter/setterを積極的に使用しなくても良い・しない方が良い理由になっている
  • C++のenumの値を文字列にできるライブラリnameofがすごい - Qiita

    はじめに 2019/7/10追記 NAMEOF_TYPEの例が0.8.0以降のバージョンで動かない問題を修正しました (Thanks! @tyu_ru_cppさん) C++だと「enumで定義した名前を文字列にしたい」というときに困ることがたまによくあります。他の言語だとToStringメソッドを使って文字列にできたりするのですが、C++だとそうはいきません。 Qtを使うと独自の黒魔術によって比較的楽に取得することができるのですけども、Qtを使わないピュアなC++な環境だとどーすんだろっていう感じです。 そこで、Siv3dの作者さんである@Reputelessさんが、まさにそのenumから文字列の変換ができるライブラリについて呟いておられまして、その機能と実装方法に感銘を受けたので、ここで紹介したいと思います。 C++ で enum の値を追加の記述無しで文字列にできるライブラリだ (MS

    C++のenumの値を文字列にできるライブラリnameofがすごい - Qiita
    iww
    iww 2019/04/05
    『文字列リテラルをsizeofするとその文字列の長さが取れること、関数のシグネチャはある程度固定であることを利用すると、以下のように筋肉で切り出すことが出来ます。』 筋肉という表現をすればよいのか。
  • Vagrant + Chef + CentOS6.5 でOpenCV2.4.9をインストールする。 - Qiita

    OpenCVをVagrant + Chef + CentOS6.5の開発環境にインストールするのに結構なハマり所が多かったので、メモしておきます。 OpenCVをインストールするレシピ 以下がopencvをインストールするためのレシピです。 for_opencv_pkgs = %w( gcc gtk+extra gtk+extra-devel pkgconfig python python-devel numpy libavc1394 libavc1394-devel libdc1394 libdc1394-devel libjpeg-turbo libjpeg-turbo-devel libpng libpng-devel sqlite-devel ) for_opencv_pkgs.each do |pkg| package pkg do action :install end end

    Vagrant + Chef + CentOS6.5 でOpenCV2.4.9をインストールする。 - Qiita
    iww
    iww 2019/01/26
    『g++: internal compiler error: Killed (program cc1plus)』 はメモリ不足が疑われるとのこと
  • C++14の新機能: [[deprecated]] 属性

    [[deprecated]]属性とは、C++11で追加された属性の文法で指定できる機能である。 deprecated属性は、任意の名前やエンティティに指定できる。deprecated属性を指定された名前やエンティティは、依然として通常通り使用できるが、使用が非推奨になる。 [[deprecated]] int handy_global_variable ; int main() { handy_global_variable ; // 非推奨 } deprecated属性には、文字列リテラルを記述することもできる。 [[deprecated("Don't Use It!")]] int g ; deprecated属性は、クラス、typedef名、変数、非staticデータメンバー、関数、enum、テンプレートの特殊化に対して指定できる。それぞれの属性を記述する文法は以下の通り。 // ク

    iww
    iww 2018/12/27
  • nmコマンドでC/C++のシンボルテーブルを見る、C++の名前マングリング、"C"リンケージ、あるいはリンカに関するメモ - 百日半狂乱

    前回(g++)と前々回(gcc)のサンプルコードを使ったC++のマングリングや"C"リンケージに関するメモ. nmコマンドでサンプルコードのシンボルテーブルを覗いた後に、C++からCの関数を呼び出す場合のサンプルコードを示す. 特にリンケージ周りの説明は正確性を欠いているやもしれませんのでご容赦下さい.より詳細な説明は参考リンク等を参照して頂ければと思います. nmコマンド nm は、UNIXや類似のオペレーティングシステムに存在するコマンドであり、バイナリファイル(ライブラリ、実行ファイル、オブジェクトファイル)の中身を調べ、そこに格納されているシンボルテーブルなどの情報を表示する。デバッグに使われることが多く、識別子の名前の衝突問題やC++の名前修飾の問題を解決する際に補助として用いられる。 GNUプロジェクトでは、高機能の nm プログラムを GNU Binutils パッケージの一

    nmコマンドでC/C++のシンボルテーブルを見る、C++の名前マングリング、"C"リンケージ、あるいはリンカに関するメモ - 百日半狂乱
  • 6-6. C++デストラクタによる安全な資源解放

    プログラムが確保したリソースは,利用後,適切に解放しなければならない。確保したリソースを解放し忘れると,しばしばプログラムが予期せず終了することもある。ネットワークサービスを提供するプログラムにこのような不具合があると,サービスを提供できなくなる場合がある。 リソース解放忘れでもっとも有名な問題は,やはり「メモリリーク問題」だろう(関連記事『6-5. メモリリーク』)。システムのメモリ容量は有限だ。プログラムがメモリ領域を作業用に確保したいとき,malloc( )関数によりシステムからメモリ領域を借り入れる(確保)ことができる。借り入れたメモリ領域を使って作業を済ませたなら,必ずそのメモリ領域をfree( )関数でシステムへ返却(解放)しなければならない。メモリリーク問題は,プログラムが適切にfree( )関数でメモリ領域を解放しないことにより,システムの貸し出し可能なメモリがどんどん消費

    iww
    iww 2018/11/28
  • 静的解析による品質向上支援ツール「PGRelief C/C++」 価格 : 富士通ソフトウェアテクノロジーズ

    生命保険、通信、自動車業界、金融そして化学メーカーなど、異なる業種をつなげ、「マーケティング」の切り口から社会課題の解決の糸口をみつけることはできないか。日を代表する企業のマーケティング責任者・担当者が集まり、経済が直面する課題について意見を交わしました。記事では、最終日の会合から議論の一部を紹介します。​

    静的解析による品質向上支援ツール「PGRelief C/C++」 価格 : 富士通ソフトウェアテクノロジーズ
  • 無償のソースコード静的解析ツール、AdLint登場 | マイナビニュース

    オージス総研は2月28日、C言語プログラミング用の静的解析ツール「AdLint 1.0」を無償公開した。AdLint 1.0はオープンソース化されており、ライセンスとしてGNU GPL 3を採用している。ANSI C89、ISO C90、 ISO C99の一部に準拠したソースコードの解析ができるという。 AdLintではシングルモジュール解析、クロスモジュール解析、597種類の警告検知、14種類のコード情報抽出、15種類のコード品質メトリクス測定などを実装しており、コンパイラでは検出できない不具合の可能性を警告したり、「経路複雑度」、「被呼出し数」、「デッドコード数」などを測定してソースコードの品質を指標化したりできるとしている。また、同社が提供しているソースコード品質評価ツール「Adqua」と組み合わせることでソースコードの品質を視覚的なレポートで表示することもできるという。 AdLin

    iww
    iww 2018/11/28
  • readelfのシンボルテーブルをデマングルして読みやすくする (c++filtを使う) - Qiita

    #include <iostream> #include <boost/optional.hpp> int main(int argc, char const* argv[]) { boost::optional<int> opt; return 0; } おもむろに g++ test.cpp でビルドする (=> a.out ができる) まずはそのままシンボルテーブルを見てみる(マングリングされている状態) 以下は readelf -s -W a.out の実行結果 Symbol table '.dynsym' contains 10 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND 1: 0000000000000000 0 NOTYPE WEAK

    readelfのシンボルテーブルをデマングルして読みやすくする (c++filtを使う) - Qiita
    iww
    iww 2018/11/28
    デマングルするには c++filt