Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/template/memclass4.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// Origin: PR c++/42824 // { dg-do compile } template<int T> class int_ { }; template<int T, int T2> class Unit { public: Unit(const Unit<T, T2>& other) {} }; template<int T> class Quan { public: Quan(void) {} template<int T2> Quan(double value, Unit<T, T2> unit) {} }; typedef Quan<0> Scalar; template<int T> class hlp { public: typedef Quan<T> type; }; class Mtrl { public: template<int T> struct AssoType { typedef typename hlp<T>::type type; }; }; template<class T> class Eval { public: Eval(const T& object){} template<int V> void eval() { eval<V> (int_<0>()); } private: template<typename U> struct Wrap {}; template<int V, int V2> void value(Wrap<Quan<V2> >) {} template<int V> void value(Wrap<Scalar>) {} template<int V> void eval(int_<0>) { typedef typename T::template AssoType<V>::type Type; value<V>(Wrap<Type>()); } }; class Foo { public: static void eval(const Mtrl& mtrl) { Eval<Mtrl> h(mtrl); h.eval<0> (); } };