static initialization vs ODR violation
- まず、ODR violation対策のこれを参照
- msvcは、上の_1を(optimizerがないと?)statically-initializeできない
- gccは、_1はstatically-initializeできるが、placeholder const *p_1 = &_1; のように使った場合、p_1をstatically-initializeできない
- 結局、static-initializationが欲しいなら単にconstを付けるしかないと思われる
- Boost.ProtoやBoost.Xpressiveはそうしている
- static-initializationは、特に効率面から重要