3

boost::anyオブジェクトとオブジェクトがあるとしboost::variantます。

私はconvert、特殊なboost::variantboost::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;
}

そのような関数を書くことが可能かどうか、または何らかの理由で不可能ではないかどうか疑問に思っていますか?

4

2 に答える 2