1a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <vector> 2a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <algorithm> 3a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <string> 4a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS) 5a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# include <rope> 6a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 7a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS) 8a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# include <slist> 9a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 10a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <list> 11a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <deque> 12a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <set> 13a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <map> 14a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if defined (STLPORT) 15a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# include <unordered_set> 16a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# include <unordered_map> 17a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 18a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS) 19a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# include <hash_set> 20a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# include <hash_map> 21a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 22a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <queue> 23a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <stack> 24a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 25a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include "mvctor_test.h" 26a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 27a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) 28a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerusing namespace std; 29a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (STLPORT) 30a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerusing namespace std::tr1; 31a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 32a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 33a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 34a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 35a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 36a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (__GNUC__) && defined (_STLP_USE_NAMESPACES) 37a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// libstdc++ sometimes exposed its own __true_type in 38a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// global namespace resulting in an ambiguity. 39a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# define __true_type std::__true_type 40a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# define __false_type std::__false_type 41a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 42a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 43a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerstatic bool type_to_bool(__true_type) 44a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ return true; } 45a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerstatic bool type_to_bool(__false_type) 46a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ return false; } 47a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 48a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnertemplate <class _Tp> 49a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerstatic bool is_movable(const _Tp&) { 50a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef typename __move_traits<_Tp>::implemented _MovableTp; 51a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner return type_to_bool(_MovableTp()); 52a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 53a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 54a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnertemplate <class _Tp> 55a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerstatic bool is_move_complete(const _Tp&) { 56a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef __move_traits<_Tp> _TpMoveTraits; 57a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef typename _TpMoveTraits::complete _TpMoveComplete; 58a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner return type_to_bool(_TpMoveComplete()); 59a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 60a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 61a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerstruct specially_allocated_struct { 62a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool operator < (const specially_allocated_struct&) const; 63a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (__DMC__) // slist<_Tp,_Alloc>::remove error 64a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool operator==(const specially_allocated_struct&) const; 65a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 66a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner}; 67a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 68a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if defined (__DMC__) 69a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerbool specially_allocated_struct::operator < (const specially_allocated_struct&) const 70a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ return false; } 71a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 72a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 73a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerstruct struct_with_specialized_less {}; 74a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 75a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_USE_NAMESPACES) 76a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnernamespace std { 77a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 78a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner _STLP_TEMPLATE_NULL 79a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner class allocator<specially_allocated_struct> { 80a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //This allocator just represent what a STLport could do and in this 81a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //case the STL containers implemented with it should still be movable 82a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //but not completely as we cannot do any hypothesis on what is in this 83a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //allocator. 84a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner public: 85a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef specially_allocated_struct value_type; 86a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef value_type * pointer; 87a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef const value_type* const_pointer; 88a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef value_type& reference; 89a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef const value_type& const_reference; 90a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef size_t size_type; 91a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef ptrdiff_t difference_type; 92a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_MEMBER_TEMPLATE_CLASSES) 93a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner template <class _Tp1> struct rebind { 94a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef allocator<_Tp1> other; 95a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner }; 96a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 97a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner allocator() _STLP_NOTHROW {} 98a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_MEMBER_TEMPLATES) 99a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner template <class _Tp1> allocator(const allocator<_Tp1>&) _STLP_NOTHROW {} 100a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 101a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner allocator(const allocator&) _STLP_NOTHROW {} 102a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner ~allocator() _STLP_NOTHROW {} 103a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner pointer address(reference __x) const { return &__x; } 104a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner const_pointer address(const_reference __x) const { return &__x; } 105a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner pointer allocate(size_type, const void* = 0) { return 0; } 106a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void deallocate(pointer, size_type) {} 107a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner size_type max_size() const _STLP_NOTHROW { return 0; } 108a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void construct(pointer, const_reference) {} 109a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void destroy(pointer) {} 110a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner }; 111a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 112a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner _STLP_TEMPLATE_NULL 113a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner struct less<struct_with_specialized_less> { 114a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool operator() (struct_with_specialized_less const&, 115a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner struct_with_specialized_less const&) const; 116a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner }; 117a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 118a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 119a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if !defined (_STLP_NO_MOVE_SEMANTIC) 120a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (__BORLANDC__) && (__BORLANDC__ >= 0x564) 121a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner _STLP_TEMPLATE_NULL 122a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner struct __move_traits<vector<specially_allocated_struct> > { 123a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef __true_type implemented; 124a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef __false_type complete; 125a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner }; 126a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner _STLP_TEMPLATE_NULL 127a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner struct __move_traits<deque<specially_allocated_struct> > { 128a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef __true_type implemented; 129a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef __false_type complete; 130a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner }; 131a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner _STLP_TEMPLATE_NULL 132a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner struct __move_traits<list<specially_allocated_struct> > { 133a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef __true_type implemented; 134a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef __false_type complete; 135a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner }; 136a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner _STLP_TEMPLATE_NULL 137a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner struct __move_traits<slist<specially_allocated_struct> > { 138a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef __true_type implemented; 139a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef __false_type complete; 140a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner }; 141a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner _STLP_TEMPLATE_NULL 142a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner struct __move_traits<less<struct_with_specialized_less> > { 143a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef __true_type implemented; 144a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef __false_type complete; 145a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner }; 146a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner _STLP_TEMPLATE_NULL 147a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner struct __move_traits<set<specially_allocated_struct> > { 148a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef __true_type implemented; 149a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef __false_type complete; 150a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner }; 151a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner _STLP_TEMPLATE_NULL 152a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner struct __move_traits<multiset<specially_allocated_struct> > { 153a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef __true_type implemented; 154a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner typedef __false_type complete; 155a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner }; 156a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 157a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 158a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 159a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 160a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_USE_NAMESPACES) 161a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 162a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 163a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 164a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 165a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid MoveConstructorTest::movable_declaration() 166a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 167a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if defined (STLPORT) && !defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) && \ 168a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner !defined (_STLP_NO_MOVE_SEMANTIC) 169a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //This test purpose is to check correct detection of the STL movable 170a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //traits declaration 171a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 172a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //string, wstring: 173a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(string()) ); 174a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 175a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(string()) ); 176a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# else 177a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(string()) ); 178a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 179a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_HAS_WCHAR_T) 180a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(wstring()) ); 181a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 182a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(wstring()) ); 183a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# else 184a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(wstring()) ); 185a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 186a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 187a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 188a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 189a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS) 190a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 191a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //crope, wrope: 192a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(crope()) ); 193a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 194a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(crope()) ); 195a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# else 196a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(crope()) ); 197a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 198a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_HAS_WCHAR_T) 199a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(wrope()) ); 200a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 201a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(wrope()) ); 202a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# else 203a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(wrope()) ); 204a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 205a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 206a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 207a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 208a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 209a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 210a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //vector: 211a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(vector<char>()) ); 212a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(vector<specially_allocated_struct>()) ); 213a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 214a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(vector<char>()) ); 215a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(vector<specially_allocated_struct>()) ); 216a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# else 217a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(vector<char>()) ); 218a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 219a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 220a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 221a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 222a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //deque: 223a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(deque<char>()) ); 224a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(deque<specially_allocated_struct>()) ); 225a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 226a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(deque<char>()) ); 227a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(deque<specially_allocated_struct>()) ); 228a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# else 229a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(deque<char>()) ); 230a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 231a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 232a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 233a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 234a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //list: 235a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(list<char>()) ); 236a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(list<specially_allocated_struct>()) ); 237a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 238a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(list<char>()) ); 239a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(list<specially_allocated_struct>()) ); 240a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# else 241a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(list<char>()) ); 242a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 243a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 244a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 245a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS) 246a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 247a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //slist: 248a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(slist<char>()) ); 249a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(slist<specially_allocated_struct>()) ); 250a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 251a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(slist<char>()) ); 252a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(slist<specially_allocated_struct>()) ); 253a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# else 254a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(slist<char>()) ); 255a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 256a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 257a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 258a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 259a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 260a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //queue: 261a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(queue<char>()) ); 262a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(queue<specially_allocated_struct>()) ); 263a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 264a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(queue<char>()) ); 265a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(queue<specially_allocated_struct>()) ); 266a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# else 267a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(queue<char>()) ); 268a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 269a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 270a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 271a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 272a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //stack: 273a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(stack<char>()) ); 274a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(stack<specially_allocated_struct>()) ); 275a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 276a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(stack<char>()) ); 277a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(stack<specially_allocated_struct>()) ); 278a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# else 279a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(stack<char>()) ); 280a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 281a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 282a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 283a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 284a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 285a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 286a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid MoveConstructorTest::movable_declaration_assoc() 287a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 288a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if defined (STLPORT) && !defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) && \ 289a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner !defined (_STLP_NO_MOVE_SEMANTIC) 290a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 291a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //associative containers, set multiset, map, multimap: 292a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 293a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //For associative containers it is important that less is correctly recognize as 294a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //the STLport less or a user specialized less: 295a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 296a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(less<char>()) ); 297a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 298a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(less<struct_with_specialized_less>()) ); 299a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 300a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //set 301a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(set<char>()) ); 302a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(set<specially_allocated_struct>()) ); 303a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 304a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(set<char>()) ); 305a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(set<specially_allocated_struct>()) ); 306a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# else 307a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(set<char>()) ); 308a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 309a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 310a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //multiset 311a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(multiset<char>()) ); 312a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(multiset<specially_allocated_struct>()) ); 313a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 314a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(multiset<char>()) ); 315a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(multiset<specially_allocated_struct>()) ); 316a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# else 317a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(multiset<char>()) ); 318a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 319a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 320a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //map 321a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(map<char, char>()) ); 322a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(map<specially_allocated_struct, char>()) ); 323a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 324a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(map<char, char>()) ); 325a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //Here even if allocator has been specialized for specially_allocated_struct 326a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //this pecialization won't be used in default map instanciation as the default 327a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //allocator is allocator<pair<specially_allocated_struct, char> > 328a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(map<specially_allocated_struct, char>()) ); 329a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# else 330a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(map<char, char>()) ); 331a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 332a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 333a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //multimap 334a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(multimap<char, char>()) ); 335a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(multimap<specially_allocated_struct, char>()) ); 336a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 337a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(multimap<char, char>()) ); 338a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //Idem map remark 339a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_move_complete(multimap<specially_allocated_struct, char>()) ); 340a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# else 341a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( !is_move_complete(multimap<char, char>()) ); 342a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 343a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 344a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 345a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 346a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 347a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid MoveConstructorTest::movable_declaration_hash() 348a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 349a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if defined (STLPORT) && !defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) && \ 350a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner !defined (_STLP_NO_MOVE_SEMANTIC) 351a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 352a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //hashed containers, unordered_set unordered_multiset, unordered_map, unordered_multimap, 353a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner // hash_set, hash_multiset, hash_map, hash_multimap: 354a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 355a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //We only check that they are movable, completness is not yet supported 356a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(unordered_set<char>()) ); 357a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(unordered_multiset<char>()) ); 358a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(unordered_map<char, char>()) ); 359a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(unordered_multimap<char, char>()) ); 360a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS) 361a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(hash_set<char>()) ); 362a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(hash_multiset<char>()) ); 363a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(hash_map<char, char>()) ); 364a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( is_movable(hash_multimap<char, char>()) ); 365a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner# endif 366a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 367a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 368a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 369a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 370