2012-01-01から1ヶ月間の記事一覧
C++11標準ライブラリのstd::future<T>,std::promise<T>を実際に利用するときの注意点メモ。gcc系共通の注意点として、g++オプションに「-std=c++0x -pthread」を指定する必要がある。前者はC++11機能サポートを有効に、後者はスレッド関連機能を有効にするオプショ</t></t>…
C++11標準ライブラリで新しく追加されたstd::promiseとstd::futureについてメモ。 future/promiseの基本 両者ともに標準ヘッダ <future> にて定義されるクラステンプレートであり、「別スレッドでの処理完了を待ち、その処理結果を取得する」といった非同期処理を実</future>…
Mac OS Xのgcc 4.6.2では、C++標準ライブラリのうちスレッド関連機能を利用できない。同環境下ではマクロ_GLIBCXX_HAS_GTHREADSが定義されないため、下記の標準ヘッダが提供する機能を利用できない。MacOS XのPThreadがタイムアウト付き待機関数を正しく実装…
C標準ライブラリにおいてバッファオーバーフロー脆弱性の代名詞とされていた関数getsは、プログラミング言語Cの最新規格C11にて標準規格から削除された。 2018-09-01追記:プログラミングC++言語においてもC++14で削除された。 #include <stdio.h> char buf[10]; gets</stdio.h>…
C++標準ライブラリのI/Oストリームが提供するstd::coutに対して、複数スレッドから同時に出力したときの振る舞いについてメモ。(C++03以前については、処理系依存が自明のため対象としない。)C++11標準規格によれば、下記が保証される。 既定の状態 または…
C++11標準ライブラリに新しく追加された std::bind で利用する、引数のプレースホルダ( std::placeholders::_1 とか)の最大数についてメモ。 C++11標準規格では少なくとも _1,... _10 まで定義される。処理系定義。 Boost.Bindでは _1,... _9 まで提供する…
C++11からは新しく名前空間 posix が予約された。ただし名前空間以下には何も定義されていない。 17.6.4.2.2 Namespace posix 1 The behavior of a C++ program is undefined if it adds declarations or definitions to namespace posix or to a namespace …
C++標準ライブラリのI/Oストリームで提供される、std::endl, std::ends, std::flushについてメモ。endl/ends/flushの実体は、標準ヘッダ <ostream>*1にて定義される関数テンプレート。C++標準規格ではマニピュレータ(manipulator)と呼称している。ぞれぞれの概要と、</ostream>…
元記事:How to make a pipeline with an Intel® Threading Building Blocks flow graph | Intel® Software, Michael Voss氏, 2011/9/14自分自身の理解のために日本語訳を行ったIntel TBB フローグラフ解説記事。 Intel® Threading Building Blocks フローグ…
元記事:Implementing a wave-front computation using the Intel® Threading Building Blocks flow graph | Intel® Software, Michael Voss氏, 2011/9/9自分自身の理解のために日本語訳を行ったIntel TBB フローグラフ解説記事。 Intel® Threading Building …
元記事:A feature-detection example using the Intel® Threading Building Blocks flow graph | Intel® Software, Michael Voss氏, 2011/9/9自分自身の理解のために日本語訳を行ったIntel TBB フローグラフ解説記事。 Intel® Threading Building Blocks フ…
元記事:The Intel® Threading Building Blocks flow graph is now fully supported | Intel® Software, Michael Voss氏, 2011/9/8自分自身の理解のために日本語訳を行ったIntel TBB フローグラフの紹介記事。 Intel® Threading Building Blocks フローグラフ…
C++11標準ライブラリに新しく追加されたアルゴリズムstd::minmax, std::minmax_elementについてメモ。名前の通り、最小値/最大値を一括して求めるアルゴリズム。(以下、引数に Comparator を取るオーバーロードは省略) // 25.4.7, minimum and maximum: te…
C++11標準ライブラリに新しく追加されたアルゴリズムstd::iotaについてメモ。 シーケンス要素へ昇順で連続値を代入するアルゴリズム。 最初はitoaかと思い「なぜに今更?標準化したの?」 ギリシャ文字の ι/イオタ から来ているらしい。江添さんの本の虫 が…
タイトル通り。下記コードの(1), (2), (3)は等価。 [](){ /*...*/ } // (1) []{ /*...*/ } // (2) []() -> void { /*...*/ } // (3) [] -> void { /*...*/ } // ill-formed ただし、(1)および(2)で戻り値型がvoidに推論されるのは、ラムダ式の本体部が{ retu…
id:faith_and_braveさんとこ経由で知った、C++11並行プログラミングのビデオチュートリアル集。コーディング&動作を示しながら解説が進むため、順を追って理解しやすい。(英語スピーキング速度もゆっくり目)2024-11-14追記:動画ファイルは https://www.y…
Microsoft Windowsプラットフォームのヘッダファイル windows.h は悪名高いmin, maxマクロを定義するため、プリプロセス時に意図せずminやmaxが置換されてしまい、妙なコンパイルエラーを引き起こす場合がある。一例としてMSVC10で下記コードをコンパイルす…
C言語とC++言語とでは、それぞれの標準規格におけるasmキーワードの扱いが異なることに気付いたのでメモ。結論を要約すると下記の通り。 Cでは予約語では無い。ただし、多くのシステムでは処理系定義であると言及。(informative) C++では予約語であり、その…
Intel TBB(Threading Building Blocks) 4.0では、C++11で追加された新機能との親和性向上や、新しいC++標準ライブラリ互換APIの提供が行われている。 C++11標準ライブラリ互換APIの提供 TBB 4.0ではC++11標準ライブラリとの前方互換性のために、新しく追加さ…
前記事のサンプルコード(下記)を書いた時に、“複数スレッドから同じstd::vector<T>上の異なる要素へ同時アクセス” のスレッド安全性が気になったのでメモ。 #include <vector> #include "tbb/compat/ppl.h" std::vector<int> data = /*...*/; // 全ての要素値を2倍する Con</int></vector></t>…
Intel TBB(Threading Building Blocks)とMicrosoft PPL(Parallel Pattern Library)は、両ライブラリともに同じような並列アルゴリズムや同期プリミティブを提供している。TBB バージョン2.2以降、一部機能についてはPPLとのAPI互換がとられている。(TBB 4.0…
プログラミング言語C++に関する標準規格の一覧。 略称 国際標準規格 対応するJIS規格 C++98 ISO/IEC 14882:1998 Programming languages -- C++ (なし) C++03 ISO/IEC 14882:2003 Programming languages -- C++ JIS X 3014:2003 プログラム言語 C++ TR1 ISO…
プログラミング言語Cに関する標準規格の一覧。 略称 国際標準規格 対応するJIS規格 C89 (ANSI X3.159-1989) C90と同一 C90 ISO/IEC 9899:1990 Programming languages -- C JIS X3010:1993 プログラミング言語C C95 ISO/IEC 9899:1990/Amd.1:1995 JIS X 3010:…