c++construct模板的问题 10C

template
inline void
Construct(_T1* __p, _Args&&... __args)
{ ::new(static_cast(
_p)) T1(std::forward<_Args>(_args)...); }
上面这段是我系统里的stl_construct.h里的construct模板,我用的不是SGI STL所以这段代码没用,但是这段代码是错的吧,可变参数大于2时,会用多个参数构造_T1,我查了一下SGI中的construct模板,没有查到这种可变参数版本的,想问这个模板怎么写才正确

2个回答

试试这个

 template <class T1 >
inline void
Construct(_T1* __p, _Args&&... __args)
{
    ::new(static_cast(_p)) T1(std::forward<_Args>(_args)...);
}
u014789012
逆水行舟天涯路 写错了~
接近 2 年之前 回复
u014789012
逆水行舟天涯路 template <class T1,class _T1> inline void Construct(_T1* __p, ...) { ::new(static_cast(_p)) T1(...); }
接近 2 年之前 回复

这是C++11及以后才支持的语法吧?系统头文件里的不会有错,只不过我们一般用不了这么复杂,这么写我猜也能覆盖单参数的情形。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!