C++

俺俺any

C++

C++のboostにあるboost::anyってご存知でしょうか? なんでも放りこめる便利な型です(詳細はこの辺でも)しかし、boost::anyを使っててたまーに困るのが共変の型でも変換できないということがあります。 具体的には struct X{int value;}; struct Y:X{}; boos…

lexical_castの話

C++

id:DigitalGhost:20091228 ポリシーもそうだけど、そもそも型自体書きたくないよとか言ってみる。 というわけで int n1 = lexical_cast("123"); boost::optional n1 = lexical_cast("456"); と書けるようにしてみました。 問題点を解決するのではなくてより…

g++拡張

g++のキモい拡張のひとつにa >? b というのがあります a > b ? a : b の省略形ですね。 代入もついでにやるa >?= bもあります。 gccでこれが出来ないのはかなーり(´・ω・`)ショボーンです。 fmax,fminを大量に使用する場合はg++のほうが短くなるかもしれませんね。…

C++

ついでにC++版 #include<map> template<typename T>struct fix:T{}; template<typename T> struct memo:T{ std::map<int,int>memo_; int operator()(int n){ std::map<int,int>::iterator it = memo_.find(n); if(it != memo_.end())return it->second; int value = T::operator()(n); return memo_[n] = val</int,int></int,int></typename></typename></map>…