14:19

boost-1.47.0のboost::in_placeをVisual C++ 2010 Expressで使うと、警告レベル4でコンパイルしたときにC4512エラーが出てきて困ってる。pragmaでC4512を抑制するか警告レベル3にするとコンパイルできたけど、何だろうなーこれ。

14:33

Visual C++ 2010 の C++0x 対応状況チェック - ロベールの小部屋

C++11をガンガン使っていくぜー!」と思ってVC++2010を導入してみたけど、思ったほどC++11に対応してないんだなー。可変長引数テンプレートとか、mutexやatomic、threadあたりを使いたかったけど、未対応なのかー。

14:53

C++0xCompilerSupport - Stdcxx Wiki

コンパイラごとのC++11対応状況の一覧表がありました。便利。今のところコンパイラごとに対応状況がかなりまちまちなので、仕事で安心してC++11を使えるようになるのはまだ先だなー。しばらくは趣味で使うしかないか。

15:12

「早いところC++11が普通に使えるようになってくれよう」と思う一方で、「早いところC++が廃れて別のコンパイラ言語が主流になってくれよう」とも思ってしまう。C++は仕様が複雑過ぎるしコンパイル時間が遅すぎる。Go言語なりD言語なりが主流になってる平行世界はどこにありますか?

22:43

fragments/singleton.hpp at master · psychi/fragments · GitHub

C++でsingletonを実装してみました。boost::in_place経由で任意のコンストラクタを起動できるのと、boost::call_onceでマルチスレッドに対応、あとは破棄の順序を制御をできるのが、がんばったところです。

22:54

singletonの概念はシンプルだけど、C++で実装しようとなるとやたらと面倒が多い。singletonの有用性は高いのにboostあたりでもサポートしてないのは、汎用的なものを用意するのが難しいのが原因なんかも。singletonの標準的な実装がどこかにあるといいんだけど。

23:00

C++でsingletonを実装するには、まず破棄のタイミングの問題が大きいよなー。静的局所変数としてsingletonインスタンスを用意することである程度は解決できると思ったけど、今度は、静的局所変数がスレッドセーフでないという問題が。言語仕様として、これはかなり困るだろー。

23:12

@cpp_akira なるほど。singletonは面倒が多いし、悪というのも頷けます。今回はSTL準拠のallocatorを実装しようとしたら、singletonを用意するしか選択肢がなさそうだったので、自分で実装してみました。allocatorの仕様もどうにかなるといいなあ。