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