C++

C++11 の正規表現ライブラリの曖昧さ

C++

libstdc++ の regex が実装されたそうです。 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631#c17 http://ww.reddit.com/r/cpp/comments/1nqxg5/regular_expression_support_c11_regex_in_libstdcv3/ http://gcc.gnu.org/?20131008212833 そこで、仕様の…

正規表現で [a-[:alpha:]] の意味って?

C++

C++11 の仕様に対する疑問 C++11 の正規表現 (std::regex_constants::ECMAScript 時) の仕様は ECMA-262 の文法を次のように微妙に変更したものとなっています。 ClassAtom :: - ClassAtomNoDash ClassAtomExClass ClassAtomCollatingElement ClassAtomEquiv…

allocatorが異なるstring

C++

typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, my_allocator<wchar_t> > my_wstring; std::wstring str1; my_wstring str2; str1 == str2; // error str1 < str2; // error str1 = str2; // error うーん、不便。allocator が異なる場合でもこれらの関数は問題なく実装できると思うので</wchar_t></wchar_t,>…

C++0x 難しい。

C++

和訳:Rvalue References: C++0x Features in VC10, Part 2 - ntnekの日記この記事のおかげで、右辺値参照とムーブセマンティクスを理解できたような気がします。

int** ⇒ const int**

C++

http://ml.tietew.jp/cppll/cppll/article/5102 int ** を const int ** へ代入できないのはなぜか? という話。 int* pi; const int** ppci = &pi; // ここでコンパイルエラー const int ci = 0; *ppci = &ci; *pi = 3; // ↑エラーが起こらなければ、 // con…

Visual C++ 2008 の std::tr1::variate_generator ってバグってね?

C++

Visual C++ 2008 Express Edition の std::tr1::variate_generator がどうも正しく動作していない気がするのですが...同じことで悩んでいる人発見 ⇒ yet-unnamed weblog - FC2 BLOG パスワード認証やっぱりバグっていて hotfix で直る、と。⇒ Google グルー…

POD の default initializer

C++

new A と new A() の違い|freeml byGMO によれば、POD (Plain Old Data) の default initializer は 0 初期化であり、default initializer を呼ぶかどうかを制御することができるらしい。知らなかった。

enum (後半修正)

C++

俺ルール的なモノです。 enum で、連続した値を定義する時は ..._begin, ..._end も書いておきます enum Name { NAME_HOGE_begin, NAME_HOGE_A = NAME_HOGE_begin, ... NAME_HOGE_Z, NAME_HOGE_end, NAME_PUHA_begin = NAME_HOGE_end, NAME_PUHA_A = NAME_PU…

今日できないバグ対処は明日にまわそう

C++

一晩寝るとアラ不思議!昨日あんなに悩んだバグが、あっという間に解決したよ!…そんなことがよくあります。

スタックサイズ

C++

今日のはまりどころはスタックサイズでした。プログラムがとても挙動不審で、実行している人によって落ちる場所が異なったり、ある行をコメントアウトすると別の箇所で落ちたり、別の行をコメントアウトすると全く別の箇所で落ちたり。どうみても関連性のな…

関数の引数は bool より enum

C++

void enable(bool enable); このような関数なら、enable(true); と書けば「有効にする」で、enable(false); と書けば「無効にする」ということが一目瞭然ですので問題ありません。でも、boolって何を意味しているのか結構わからなくなることが多いんです。 v…