65,182
社区成员




class obj
{
public :
obj() { cout << ">> create obj " << endl; }
obj(const obj& other) { cout << ">> copy create obj " << endl; }
};
void push_back(const obj& o)
{
obj b = o;
}
void push_back(obj&& o)
{
obj b = o;
}
void test()
{
push_back(obj());
}
namespace __stdTest
{
class obj
{
vector<int>* v;
public :
obj() {
v = new vector<int>(5);
cout << ">> create obj " << endl; }
obj(const obj& other) {
v = new vector<int>;
*v = *(other.v);
cout << ">> copy create obj " << endl; }
obj(obj&& other) {
std::swap(v, other.v);
cout << ">> move create obj " << endl; }
//void modify(){i++;};
~obj()
{
delete v;
}
};
void push_back(const obj& o)
{
obj b=o;
}
void push_back(obj&& o)
{
//o.modify();
obj b=std::move(o);
}
void test()
{
//obj()
//obj o;
push_back(obj());
}
}
void
push_back(const value_type& __x)
{
if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
{
_Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,
__x);
++this->_M_impl._M_finish;
}
else
#if __cplusplus >= 201103L
_M_emplace_back_aux(__x);
#else
_M_insert_aux(end(), __x);
#endif
}
#if __cplusplus >= 201103L
void
push_back(value_type&& __x)
{ emplace_back(std::move(__x)); }
template<typename... _Args>
void
emplace_back(_Args&&... __args);
#endif
[/quote]
我看的VS2010的,难道VS搞了个右值引用的接口,里面实现一样,骗人的?[/quote]
换 2015 吧 ... void
push_back(const value_type& __x)
{
if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
{
_Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,
__x);
++this->_M_impl._M_finish;
}
else
#if __cplusplus >= 201103L
_M_emplace_back_aux(__x);
#else
_M_insert_aux(end(), __x);
#endif
}
#if __cplusplus >= 201103L
void
push_back(value_type&& __x)
{ emplace_back(std::move(__x)); }
template<typename... _Args>
void
emplace_back(_Args&&... __args);
#endif
[/quote]
我看的VS2010的,难道VS搞了个右值引用的接口,里面实现一样,骗人的? void
push_back(const value_type& __x)
{
if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
{
_Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,
__x);
++this->_M_impl._M_finish;
}
else
#if __cplusplus >= 201103L
_M_emplace_back_aux(__x);
#else
_M_insert_aux(end(), __x);
#endif
}
#if __cplusplus >= 201103L
void
push_back(value_type&& __x)
{ emplace_back(std::move(__x)); }
template<typename... _Args>
void
emplace_back(_Args&&... __args);
#endif