Viewing file: pr60659.C (1.16 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// { dg-do compile } template <typename _InputIterator> void __distance (_InputIterator); template <typename _InputIterator> void distance (_InputIterator, _InputIterator p2) { __distance (p2); }
namespace boost { template <class Iterator> struct A { typedef typename Iterator::difference_type type; }; template <class T> typename T::const_iterator end (T &); template <class T> typename T::const_iterator begin (T &); template <class T> struct D : A<typename T::const_iterator> { }; template <class T> typename D<T>::type distance (const T &p1) { distance (boost::begin (p1), boost::end (p1)); return 0; } template <class IteratorT> class B { public: typedef B type; typedef IteratorT const_iterator; }; }
typedef int storage_t[]; struct F; template <template <typename> class> struct G { G (const G &p1) { p1.m_fn1 ().m_fn1 (0); } const F &m_fn1 () const { const void *a; a = &data_m; return *static_cast<const F *>(a); } storage_t *data_m; };
struct F { virtual F *m_fn1 (void *) const; }; template <typename> struct H; struct C : G<H> { typedef int difference_type; }; boost::B<C> AllTransVideos (); int b = boost::distance (AllTransVideos ());
|