0
以下內容摘自vs 2010的地圖實現,該成員函數在文件xtree中的父類_Tree中定義。返回類型模板(enable_if)禁止什麼?
template<class _Valty>
typename _STD tr1::enable_if<!_STD tr1::is_same<const_iterator,
typename _STD tr1::remove_reference<_Valty>::type>::value,
iterator>::type
insert(const_iterator _Where,
_Valty&& _Val)
{ // try to insert node with value _Val using _Where as a hint
return (_Insert(_Where,
this->_Buynode(_STD forward<_Valty>(_Val))));
}
其實,這個功能iterator insert (iterator position, const value_type& x),它的有趣的部分是它的返回類型!這是什麼意思?據我所知,如果value_type(即_Valty)與const_iterator相同,它將禁用模板實例化。
但是,在這樣的情況下,由於沒有來自常量性的隱式轉換到VALUE_TYPE,這看起來像是多餘的。
我相信我有些東西我不明白,它是什麼?返回類型模板禁止什麼?