Viewing file: pr49770.C (1.44 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do run } */ /* { dg-options "-std=c++0x -fno-tree-forwprop" } */
typedef __SIZE_TYPE__ size_t;
template < typename > struct remove_reference; template < typename _Tp > struct remove_reference <_Tp & > { typedef _Tp type; }; template < typename _Tp > typename remove_reference < _Tp >::type && move (_Tp && __t) { return static_cast < typename remove_reference < _Tp >::type && >(__t); }
template < typename _Tp > void stdswap (_Tp & __a, _Tp & __b) { _Tp __tmp (__a); __a = (__b); __b = (__tmp); }
struct _Deque_iterator { int *_M_cur; int *_M_first; int *_M_last; int **_M_node; };
static inline int operatorMIN (_Deque_iterator & __x, _Deque_iterator & __y) { return sizeof (int) * (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first) + (__y._M_last - __y._M_cur); }
struct deque { deque & operator = (deque && __x) { stdswap (_M_finish, __x._M_finish); return *this; } size_t size () { return operatorMIN (_M_finish, _M_start); }
deque (): _M_map (), _M_map_size (), _M_start (), _M_finish () { _M_start._M_last = _M_start._M_first + sizeof (int); }
int **_M_map; size_t _M_map_size; _Deque_iterator _M_start; _Deque_iterator _M_finish; };
struct queue { deque c; size_t size () { return c.size (); } };
void test01 () { queue a, b; ++a.c._M_finish._M_cur; b = move (a); if (!b.size ()) __builtin_abort (); }
int main () { test01 (); return 0; }
|