タグ

ブックマーク / cpplover.blogspot.com (8)

  • 2018-11のC++ドラフトの主要な変更

    N4792 C++20のドラフトが更新された。今回も強めの変更が入っている。 まずconstexprが大幅に強化された。 p1002r1.pdf Allowing dynamic_cast, polymorphic typeid in Constant Expressions C++20での最終的な目標は、std::vectorやstd::stringをconstexpr対応させることだ。そのために従来ならば実行時処理であった様々な機能がconstexprに対応している。今回の変更では、try/catchブロックやdynamic_cast/typeidがconstexprに対応した。また、unionの有効なメンバーの変更もconstexprに対応した。 try/catchブロックはコンパイル時評価される場合、単に無視される。 dyanmic_cast/typeidは当にconstexpr

    usadamasa
    usadamasa 2019/01/07
    "結果的に、コンパイル時に動的ポリモルフィズムが可能になるということだ。"
  • C++に提案されている静的例外

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

    usadamasa
    usadamasa 2018/07/15
    “興味深いので入ってほしい。例外はすべてのC++で有効化されるべきだ。例外の使えないC++はC++風の別言語なので、利用者が分断されてしまう。 ”
  • C++20の汎用エイリアス宣言の提案

    P0945R0: p0945r0: Generalizing alias declarations 提案に誤りが有りすぎる。 C++のドラフトに入る見込みが高そうな提案に、汎用エイリアス宣言がある。 C++では、名前に別名をつけることがよく行われている。 型はtypedef指定子やエイリアス宣言によって別名を付けられる。 typedef int type ; using type = int ; 関数は転送関数を書くことにより、実質別名を付けられる。 int f( int x ) ; int g( int x ) { return f(x) ; } ただし、値は完璧に転送できないし、関数のアドレスも異なるものになってしまう。 変数はリファレンスで別名を付けられる。 int x = 0 ; int & y = x ; 非staticデータメンバーはストレージを消費せずに別名をつけることができ

  • Googleの公開したAbseilライブラリの価値がわからない

    先日、GoogleはAbseilというライブラリを公開した。 abseil/abseil-cpp: Abseil Common Libraries (C++) その中身を見てみたが、どうもその価値がよくわからない。 その大半は、C++14/17風の標準ライブラリのC++11による実装だ。C++14はすでにGCCもClangも実装し終えており、C++17の完全な実装も時間の問題だ。このようなライブラリを使うことはむしろ最新のC++規格の普及を妨げる。 曰く、「Abseilは完全なC++14/17実装では標準ライブラリのtypedefになる」と。しかし、それで問題が解決するのであればさっさとC++コンパイラーのバージョンを挙げたほうがよい。 containerには変わり者がある。inlined_vector<T, N>はstd::stringのSSO(Small String Optimiza

    usadamasa
    usadamasa 2017/09/29
    “我々はC++の最新の規格を実装したC++コンパイラーをいち早く使えるように努力すべきであり、それにはMicrosoft WindowsとRHELを使わないことがまず第一歩となる。” げらげら。
  • マストドン会議で技術と自由を語る

    マストドン会議というものがあり、清水亮も登壇するというので行ってきた。 マストドン会議 ―― その無限の可能性を、いま語らずしていつ語らう! ~コミュニティもマーケティングも揺るがすTwitterのライバル出現~ | Peatix マストドンは日ではやってからまだ2週間しかたっていない。一体そんな状況で誰が集まるのだろうか。主催は角川が絡んでいるらしいが、まあ、あまり期待はせずに行くことにした。 その日は来るべき超会議2017のリハーサルの日だった。会場の幕張メッセではマストドンブースが設営されていた。私が担当なので当然私も現地にいた。そして少し遅れてマストドン会議の会場に着いた。清水亮は私よりも更に少し遅れて会場入りした。 会場に入ってみると、ぬるかる氏のmastdn.jpにサーバーを提供しているさくらインターネットの人とぬるかる氏が、サーバーの運営上の話をしていた。とても技術的な話だ

    usadamasa
    usadamasa 2017/05/01
    “ドワンゴとPixivはお互いに競合するサービスを提供している企業である。Pixivは絵の投稿サービスを提供していて、ドワンゴもニコニコ静画などの絵の投稿サービスを提供している。このため、基本的に両社は商売敵であ
  • GCCの実験的なfilesystemを使う方法

    C++17には<filesystem>が追加される。GCCは実験的な実装として<experimental/filesystem>を実装している。 これを使えば、例えば以下のようにディレクトリを列挙できる。 #include <experimental/filesystem> namespace fs = std::experimental::filesystem ; int main() { fs::directory_iterator iter("/usr/bin"), end ; std::copy( iter, end, std::ostream_iterator<fs::path>(std::cout, "\n") ) ; } GCCのfilesystemは、実験的な実装であるので、ヘッダーファイルが<experimental/filesystem>であることに加え、デフォルトでは

    usadamasa
    usadamasa 2017/01/29
    [Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ http://melpon.org/wandbox/permlink/Q7LC7NxRKZpgQVWk
  • 近況

    しばらくブログを書いていなかったが、いろいろと忙しかった。 今、とある仕事をしているのだが、その仕事内容がまことに精神的に辛い。その仕事内容はまだ公開できないのだが、とりあえず言えることとしては、1文字は1バイトではないということと、C++の標準ライブラリの正規表現ライブラリはUnicodeに対応していないということと、C++のlocaleは多言語対応の足かせになっているということだ。 さて、もうひとつ憂うべき事態としては、メインで使っているラップトップが故障した。去年の冬頃からどうにも挙動がおかしいと思っていたが、いよいよ使い物にならないほど挙動がおかしくなってきたので、memtest86+にかけてみたところ、なんと4900件ほどのエラーを出したところで動作を停止した。完全にメモリが壊れている。 さて、メモリが壊れているだけなら新しくメモリを買ってくればいいのだろうが、このラップトップは

    usadamasa
    usadamasa 2016/06/05
    “factorioは極めて高い中毒性のある自動化ゲームで、プログラマーならば必ずハマるだろう。先週は職場の同僚5人でマルチプレイをして、10時間かかってロケットを打ち上げた。”
  • 歌舞伎座.tech #8 「C++初心者会」を開催した

    歌舞伎座.tech#8「C++初心者会」 - connpass 5月17日に、歌舞伎座.thch #8 「C++初心者会」を開催した。 今回は、勉強会の初心者が発表できる場を設けようという意図から、発表枠には、初心者枠とガチ枠を設けた。これにより初心者が積極的に発表しやすくなるはずだ。さて、問題は参加者と発表者が集まるかどうかだ。いざフタを開けてみると閑古鳥が鳴いているようでは極めて痛い。 さて、connpassで告知と募集を開始すると、参加枠が即座に埋まっていく。どうやら勉強会の需要はあるようでまずは一安心だ。発表枠も埋まり始めたが、その参加者を見ると、どうも、技術的、勉強会的にみて、初心者とは思われない。 さて、公開直後の参加申し込みの波がひけてみると、参加枠と初心者枠は埋まっているものの、ガチ枠が埋まらない。どうやら、みなチョットデキル的な謙遜精神を発揮してしまったようだ。仕方がない

    usadamasa
    usadamasa 2015/05/18
    “AtCoderにログインしてページをダウンロードしてコードを生成してアップロードするまですべてが自動化されている。どうやら、問題文は無視して、入力と出力のサンプルから、入力に対する正しい出力の計算方法を推定
  • 1