タグ

ブックマーク / boleros.hateblo.jp (5)

  • C++初心者会で話題になったClangの相互再帰バグについて - ボレロ村上 - ENiyGmaA Code

    中3女子です。 歌舞伎座.tech#8「C++初心者会」という勉強会が先日あり、自称初心者やクソザコによるさまざまな発表がおこなわれた。自分は参加できなかったので、いくつかの発表をニコ生で視聴した。 その中に、@wx257osn2 氏による constexpr ラムダライブラリを実装したという発表があった。実装にあたっては Clang のバグに対処するワークアラウンドを書くのに苦労したという。さもありなん。Clang は全体的な規格準拠度ではおおむね GCC 以上といってよいが、constexpr 関係ではいまだに致命的なバグを残している。それがどのようなバグなのか応答で齟齬があったようなので、脇からの補足をここに記しておく。 Clang の constexpr 関係の致命的なバグとは、相互再帰におけるバグである。相互再帰する constexpr 関数テンプレートを実体化すると、テンプレー

    C++初心者会で話題になったClangの相互再帰バグについて - ボレロ村上 - ENiyGmaA Code
    Haaaa_N
    Haaaa_N 2015/05/18
  • 日経ソフトウエア5月号 「constexpr」が開くコンパイル時プログラミングの世界 - ボレロ村上 - ENiyGmaA Code

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

    日経ソフトウエア5月号 「constexpr」が開くコンパイル時プログラミングの世界 - ボレロ村上 - ENiyGmaA Code
    Haaaa_N
    Haaaa_N 2014/04/16
    C++書いてる人でC++の基本的な文法を把握している人は何割居るだろうか…私は把握してません
  • C++14 時代の constexpr プログラミング作法 - ボレロ村上 - ENiyGmaA Code

    この記事は、C++ Advent Calendar 2013 の参加記事です。 前回は 西山信行 さんの記事でした。 まもなく C++14 時代が到来しようとしている。 ただでさえ実用的な言語機能である constexpr が C++14 での制限緩和によって神になろうとしている。 C++11 での constexpr の制限は、必然的に副作用のない関数型プログラミングを強制し、とても興味深いものではあった。 コードの可読性云々は主観によるのでここでは置くが、時には非効率な実装にならざるをえないケースもあったのは事実だ。 C++14 での constexpr は、古典的な実行時処理に慣れた者達にも非常に親しみやすいコードが書けるようになる。 ドラフトの直接的な内容については、すでに自分をはじめ有識者が解説を書いているので、そちらを参照するのが手っ取り早い。 constexpr 関数の制限緩

    C++14 時代の constexpr プログラミング作法 - ボレロ村上 - ENiyGmaA Code
    Haaaa_N
    Haaaa_N 2013/12/03
    動的メモリ確保と例外はまだ使えないのか.ギリギリ追いつかれてないな
  • USBメモリを「USB」と略す人間らは腹を切って死ぬべきである。また、USBメモリを「USB」と略す人間らはただ死んで終わるものではない。彼らは無責任な悪人であり、中3女子が地獄の火の中に投げ込む者達である。 - ボレロ村上 - ENiyGmaA Code

    中3女子です。 USBメモリを「USB」と略す人間がいることは、まったく恥ずべきことであり、彼らは石もて追われるべきである。 一方、USBメモリを「USB」と略す人間らを批判し、石を投げる者もいる。彼らこそ祝福されるべき者達である。 ここでは、なぜUSBメモリを「USB」と略す人間が石もて追われるべきかを解説する。 もし、ここに書かれていることに納得できない者は、たとえUSBメモリを「USB」と略すべき*ではない*と考える人間であっても、彼らと同様に腹を切って死ぬべきは当然であり、また、中3女子がそういう人間を当然、地獄の火の中に投げ込むものである。 USB とは、シリアルバス規格である Universal Serial Bus の略称である。 けして、USBポートに接続して動作する、半導体メモリからなるストレージのことではない。 略称の問題は責任を求め、追求することによってしか正しくでき

    USBメモリを「USB」と略す人間らは腹を切って死ぬべきである。また、USBメモリを「USB」と略す人間らはただ死んで終わるものではない。彼らは無責任な悪人であり、中3女子が地獄の火の中に投げ込む者達である。 - ボレロ村上 - ENiyGmaA Code
    Haaaa_N
    Haaaa_N 2013/03/20
    USB買ってきてくれとか言う人にはどう対処すれば良いのでしょうかね…
  • constexpr を使うべき5の理由 - その1 - ボレロ村上 - ENiyGmaA Code

    constexpr を使うべき5の理由 「なぜあなたは constexpr を使うべきか?」 「そもそも constexpr とは何か」という基的な部分から始めて、 どうして C++er が constexpr を使わなければならないか、日にちを分けて5つのケースを書いてみます。 constexpr を既にバリバリ使っているというあなたにはまったく物足りないかもしれませんが、 改めてのおさらいということで読んでいただくのも一興かと存じます。 1.定数を明示的にコンパイル時定数にする 以下のコードは、定数 x のメンバを配列のサイズに指定している。 struct X { int n; }; int main() { const X x = {10}; int a[x.n] = {1}; } GCC 4.8 でこのコードは、以下のような警告とエラーになる。 warning: ISO C++

    constexpr を使うべき5の理由 - その1 - ボレロ村上 - ENiyGmaA Code
    Haaaa_N
    Haaaa_N 2012/06/16
    @jskny_tw ちょっと面白かった
  • 1