Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/torture/pr60659.C @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// { 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 ());