如forward_list中,
template< class... Args >
void emplace_front( Args&&... args );
如果这样设计,就意味着相应的辅助函数也要设计成可变参数模板,在VS中,它的确也是把相关的函数也设计成可变参数的,如:
template<class... _Valty>
iterator emplace_after(const_iterator _Where, _Valty&&... _Val)
{ // insert element at _Where
_Insert_after(_Where, _STD forward<_Valty>(_Val)...);
return (_Make_iter(++_Where));
}
template<class... _Valty>
void _Insert_after(const_iterator _Where,
_Valty&&... _Val)
但是在使用的时候,当时我的理解就是,使用
flist.emplace_front(it2, 22,33,44);
这样的方式。当然会报错,我就想问问,emplace为什么要用可变参数模板?
PHP中文网2017-04-17 13:26:03
std::forward_list< std::pair<int, char> > list;
可以调用emplace_front(it, 1, 'x');
std::forward_list<int> list;
可以调用emplace_front(it, 1);