タグ

tipsとC++11に関するastk_fのブックマーク (3)

  • C++11スマートポインタで避けるべき過ち Top10 | POSTD

    (注:2017/10/25、いただいたフィードバックを元に翻訳を修正いたしました。修正内容については、 こちら を参照ください。) 私は新しいC++11のスマートポインタをとても気に入っています。自分でメモリを管理するのが嫌だと感じる多くの仲間たちにとって、これはいろいろな面で天の助けでした。私の場合、このおかげで新人にC++を教えるのがずっと楽になりました。 しかし、C++11のスマートポインタを幅広く使っていた2年ちょっとの間で、使い方を誤ると、プログラムの効率が落ちたりクラッシュして壊れたりするという事態に何度も遭遇しました。参照用に、以下に例を載せました。 まずはこれらの”過ち”を、簡単なAircraftクラスを例に取って見てみましょう。 class Aircraft { private: string m_model; public: int m_flyCount; weak_p

    C++11スマートポインタで避けるべき過ち Top10 | POSTD
  • C++11 の正規表現ライブラリの曖昧さ

    概要 C++11 の正規表現ライブラリの仕様の曖昧な部分を指摘し、現実の実装のぶれを例示します。 Multiline 定義 ECMA-262 では、Multiline について以下のような定義が存在します。 §15.10.2.6 (ECMA-262) Multiline が true の場合 ^ や $ は改行文字の直後や直前にもそれぞれマッチし、 false ならばマッチしない。(文字列の先頭と最後にはそれぞれ常にマッチする) §15.10.4.1, §15.10.7.4 (ECMA-262) 新しく作られた正規表現オブジェクトのフラグに "m" が指定されている場合、 multiline プロパティは true, そうでなければ false。 (つまり、デフォルトでは false) ところが C++11 n3485 には Multiline についての言及はありません。 したがって E

  • C++11メモ @ std::functionで関数を汎用的に呼び出す - ラーメンは味噌汁

    2013-12-23 C++11メモ @ std::functionで関数を汎用的に呼び出す C++11 std::functionとは C++11では以下の様に複数の種類の関数が存在します。 通常の関数 ラムダ関数 関数オブジェクト クラスのメンバ関数 C++11までは通常の関数ポインタとメンバ関数ポインタの呼び出し方が異なるなど混乱することもありましたがstd::functionはこれらの関数の種類を気にせずに汎用的にラップして呼び出すことができます。関数をテーブル化したい、保持したい、引数や返り値で渡したいときなどに非常に便利です。 サンプル #include <functional> // 通常の関数 void normalFunction() { std::cout << "normalFunction" << std::endl; } void functionTest() {

    C++11メモ @ std::functionで関数を汎用的に呼び出す - ラーメンは味噌汁
  • 1