http://www.boost.org/doc/libs/1_35_0/doc/html/boost/get_id405862.html为什么我们必须提供boost :: get的参数类型?
template<typename U, typename T1, typename T2, ..., typename TN>
U & get(variant<T1, T2, ..., TN> & operand);
函数成功仅如果内容是指定类型的U
。
boost::get
是模板函数吗?
大多数情况下,当我们调用模板函数时,函数本身可以推导出参数类型,因此我们不必手动输入类型。
为什么在这种情况下,我们必须手动提供类型?是否因为模板函数无法推断返回值的类型,所以我们必须为返回类型提供类型?
boost::variant<int, std::string> my_first_variant;
my_first_variant = 10;
assert(boost::get<int>(my_first_variant) == 10)
^
“*这是因为模板函数无法推断返回值的类型,因此我们必须为返回类型提供类型?*”是的,完全是 - 您回答了您自己的问题。 ; - ] – ildjarn 2012-02-06 19:39:47