boost::any
オブジェクトとオブジェクトがあるとしboost::variant
ます。
私はconvert
、特殊なboost::variant
例boost::variant<int, std::string>
であるテンプレートパラメータ T を取り、魔法のようにを指定されboost::any
た の利用可能なタイプの1つに変換するジェネリック関数を探していますboost::variant
。
template<T>
T convert(const boost::any& any) {
// Some generic conversion code here or throw exception if conversion is not possible!
}
int main(int argc, char** args) {
typedef boost::variant<int, std::string> TVar;
boost::any any="Hello World";
TVar variant=convert<TVar>(any);
// variant contains "Hello World"
return 0;
}
そのような関数を書くことが可能かどうか、または何らかの理由で不可能ではないかどうか疑問に思っていますか?