Viewing file: pr55106.C (1.68 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do compile } */ /* { dg-options "-c -O3" } */ template<typename _Tp> struct A { typedef _Tp *pointer; typedef _Tp& reference; typedef _Tp& const_reference; template<typename>struct rebind { typedef A other; }; };
template<typename _Alloc>struct __alloc_traits { typedef typename _Alloc::pointer pointer; typedef typename _Alloc::reference reference; typedef typename _Alloc::const_reference const_reference; template<typename _Tp>struct rebind { typedef typename _Alloc::template rebind<_Tp>::other other; }; }; template<typename _Tp, typename _Alloc>struct B { typedef typename __alloc_traits<_Alloc>::template rebind< _Tp>::other _Tp_alloc_type; typedef typename __alloc_traits<_Tp_alloc_type>::pointer pointer; struct F { pointer _M_start; }; F _M_impl; }; template<typename _Tp, typename _Alloc = A<_Tp> >class vec : B<_Tp, _Alloc>{ typedef B<_Tp, _Alloc> _Base; typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; typedef __alloc_traits<_Tp_alloc_type> _Alloc_traits;
public: typedef _Tp value_type; typedef typename _Alloc_traits::reference reference; typedef typename _Alloc_traits::const_reference const_reference; reference operator[](int p1) { return *(this->_M_impl._M_start + p1); }
const_reference operator[](long) const; };
int a[17]; class C { vec<int> m_value; void opModDivGuts(const C&); int mostSetBitP1() const; }; void C::opModDivGuts(const C& p1) { int b = p1.mostSetBitP1(), c = b + 1; int d[16];
for (int i = c; i; i--) a[i] = p1.m_value[i] << b;
for (int i = 0; i < c; i++) m_value[i] = d[i] >> b << -b; }
|