yohhoyの日記

技術的メモをしていきたい日記

2012-08-01から1ヶ月間の記事一覧

可変引数リストと非PODクラス型の関係

プログラミング言語C++において、可変引数リスト(...; ellipsis)をとる関数に非PODクラス型を渡した場合の振る舞いについてメモ。 void foo(int, ...); std::string s; foo(1, s); // ?? C++03 可変引数リストに非PODクラス型を渡した場合、未定義動作(undef…

標準入出力とchar/wchar_t型の混在

C C++

C/C++標準ライブラリの標準入出力ストリームにおける char/wchar_t 型混在についてメモ。またはCの printf/wprintf 関数、C++の cout/wcout オブジェクト混在利用に関する話題。まとめ:ある標準入出力ストリームに対する char/wchar_t 入出力操作の混在…

NULL-NULL=?

C C++

C/C++言語におけるヌルポインタ同士の減算に関するメモ。 int *p = NULL, *q = NULL; ptrdiff_t x = (p - q); // x == 0 ? まとめ: C言語仕様上は未定義動作(undefined behavior)。とはいえ、大半の処理系では値0になると予測される(単に経験則)。 C++言…

std::regexチートシート

C++

C++11標準ライブラリに追加された正規表現ライブラリstd::regex(std::basic_regexクラステンプレート) のチートシート。PDF形式。 C++11 regex cheatsheet

std::vectorのサイズ指定初期化

C++

C++標準ライブラリのシーケンスコンテナstd::vectorに関して、C++03/11でのサイズ指定コンストラクタ差異に関するメモ。 114 :デフォルトの名無しさん:2012/08/01(水) 10:00:54.97 >>111 vector(n), vector::resize(n) について。C++03 では (n, value) と…

unlock操作とデストラクト処理のスキマ

C++

C++11標準ライブラリのミューテックスクラスと、unlock操作〜オブジェクト破棄で起こり得る挙動についてメモ。注意:ミューテックスクラスの内部実装に対する要件の話であり、標準ライブラリ利用者にとっては “意図通り” 動作することが保証されている。(言…

浮動小数点数比較マクロ

C C++

C99で追加された浮動小数点数比較マクロについてメモ。同機能はC++11においても提供される。比較マクロとそれに対応する比較演算の一覧。組込みの比較演算子では浮動小数点数例外(floating-point exception)が発生する可能性があるが、比較マクロでは決して…

NRVO(copy elision)と関数パラメータ変数

C++

C++11標準規格で許容される最適化 "copy elision"*1 と、関数パラメータ(仮引数)変数との関係についてメモ。 return文に関数パラメータ変数を指定しても、コンパイラにて "copy elision" が行われることは無い*2。つまり戻り値オブジェクト生成のために、必…

古のK&R C in 2012

2012年現在のC言語コンパイラでもK&R Cソースコードを扱えるか試したのでメモ。*1結論:gccとMSVCはK&R Cソースコードでもコンパイル可能。 /* K&R style C */ int printf(); int add(); main(argc, argv) int argc; char** argv; { printf("1+2=%d\n", add(…

condition_variable_any+recursive_mutexの注意点

C++11標準ライブラリやBoost.Threadライブラリで提供されるcondition_variable_anyとrecursive_mutexの組み合わせについてメモ。まとめ:condition_variable_anyとrecursive_mutexの組み合わせ利用は避けること。*1 *2条件変数condition_variable_anyのwait…