make_cow
This commit is contained in:
@@ -569,7 +569,7 @@ TinySTL
|
|||||||
|
|
||||||
####(19):cow_ptr
|
####(19):cow_ptr
|
||||||
|
|
||||||
cow_ptr<string> cp1(new string("zouxiaohang"));
|
cow_ptr<string> cp1 = make_cow<string>("zouxiaohang");
|
||||||
auto cp2 = cp1, cp3 = cp1;
|
auto cp2 = cp1, cp3 = cp1;
|
||||||
assert(cp1 == cp2 && cp2 == cp3);
|
assert(cp1 == cp2 && cp2 == cp3);
|
||||||
assert(*cp1 == *cp2 && *cp2 == *cp3 && *cp3 == "zouxiaohang");
|
assert(*cp1 == *cp2 && *cp2 == *cp3 && *cp3 == "zouxiaohang");
|
||||||
|
|||||||
@@ -68,6 +68,11 @@ namespace TinySTL{
|
|||||||
template<class _T>
|
template<class _T>
|
||||||
friend class Detail::proxy;
|
friend class Detail::proxy;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<class T, class... Args>
|
||||||
|
cow_ptr<T> make_cow(Args...args){
|
||||||
|
return cow_ptr<T>(new T(std::forward<Args>(args)...));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "Detail\COWPtr.impl.h"
|
#include "Detail\COWPtr.impl.h"
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ namespace TinySTL{
|
|||||||
assert(cp4 == nullptr);
|
assert(cp4 == nullptr);
|
||||||
}
|
}
|
||||||
void testCase2(){
|
void testCase2(){
|
||||||
cow_ptr<string> cp1(new string("zouxiaohang"));
|
cow_ptr<string> cp1 = make_cow<string>("zouxiaohang");
|
||||||
auto cp2 = cp1, cp3 = cp1;
|
auto cp2 = cp1, cp3 = cp1;
|
||||||
assert(cp1 == cp2 && cp2 == cp3);
|
assert(cp1 == cp2 && cp2 == cp3);
|
||||||
assert(*cp1 == *cp2 && *cp2 == *cp3 && *cp3 == "zouxiaohang");
|
assert(*cp1 == *cp2 && *cp2 == *cp3 && *cp3 == "zouxiaohang");
|
||||||
|
|||||||
Reference in New Issue
Block a user