タグ

2017年12月19日のブックマーク (7件)

  • std::promise - cpprefjp C++日本語リファレンス

    概要 promiseは、「別スレッドでの処理完了を待ち、その処理結果を取得する」といった非同期処理を実現するためのクラスであり、futureクラスと組み合わせて使用する。promiseが別スレッドでの処理結果を書き込み、futureがその結果を読み取る。promiseとfutureは内部的に同一の共有状態を参照する。これによってスレッド間での値の受け渡しやスレッド間同期を実現する。 このクラスはR&およびvoidの、2つの特殊化を持つ。 テンプレートパラメータ: R : 結果値の型 メンバ関数 名前 説明 対応バージョン

    sonots
    sonots 2017/12/19
    C++をプロミスします
  • 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
    sonots
    sonots 2017/12/19
  • C++ Template Metaprogramming

    PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...

    C++ Template Metaprogramming
    sonots
    sonots 2017/12/19
  • C++ で楽しいメタプログラミングをしよう - Qiita

    ブログ記事からの転載です。 初心者C++er Advent Calendar 2016 19日目の記事です。 クリスマスから少し過ぎてしまいましたが、最後に楽しくメタプログラミングしてみる記事でも。 初心者C++er Advent Calendar 2016 が全部うまるといいですね。 [メタプログラミングとは] メタプログラミングの定義は言語によって異なりますが、C++ においては『テンプレート』を利用して『コンパイル時』に処理を行うことを指す事が一般的です。 今回はテンプレートを利用して『型に対して』コンパイル時に処理を行うコードを書いていきたいと思います。 [前提の知識] [テンプレートの特殊化] 前提として『テンプレートの特殊化』を理解している必要があります。 『テンプレートの特殊化』というのはクラステンプレートなどに対して『特定の型』に対して処理を別に記述する記法です。

    C++ で楽しいメタプログラミングをしよう - Qiita
    sonots
    sonots 2017/12/19
  • More C++ Idioms/メタ関数(Metafunction) - Wikibooks

    テンプレートは C++ の強力な機能であり、コンパイル時に任意の計算を実行することができる。これはテンプレートメタプログラミングとして知られている。コンパイル時に実行される計算の単純な例として (1) コンパイル時定数に基づく型の選択 (2) 階乗の計算 がある。実際のところ、C++ テンプレートはチューリング完全な C++ のサブ言語である。メタ関数(Metafunction)イディオムは C++ でコンパイル時アルゴリズムを記述する基的な方法である。 利用あるいは再利用しやすいようにアルゴリズムは(コンパイル時に対するものでも実行時に対するものでも)カプセル化するべきである。一般的に、実行時アルゴリズムは、(当然)実行時に呼び出される関数としてカプセル化される。一方メタ関数とは、実行時での関数に対するコンパイル時の類似物である。通常の関数は値やオブジェクトをパラメータとして受け入れ、

    sonots
    sonots 2017/12/19
  • std::plus - cppreference.com

    sonots
    sonots 2017/12/19
    template struct して operator() を overload するのか
  • Chainerで学習したモデルをONNX-ChainerとNNVM/TVMを使ってAndroidへデプロイする - Qiita

    tkatoです。エッジデバイスでのDeepLearningに興味があります。 近年DeepLearningで学習したモデルをスマートフォンなどのエッジデバイスで動作させる需要が高まっています。 そこで今回は、Chainerの学習済みモデルをAndroidスマートフォンで動かして行きたいと思います。 具体的には、上図のようにChainerのモデルをONNX-ChainerでONNXフォーマットに変換し、NNVM/TVMを使ってAndroidへデプロイします。 結論から言うと、Chainerの学習済みYOLOv2(tiny)をSnapdragon搭載のAndroidスマートフォンのCPU/GPUで動作させることができました。 また、ChainerをONNXフォーマットに変換してNNVM/TVMを使うことで、「Chainerでモデルをつくる → Androidでの動作確認」が全てPythonから

    Chainerで学習したモデルをONNX-ChainerとNNVM/TVMを使ってAndroidへデプロイする - Qiita
    sonots
    sonots 2017/12/19