blob: 1f8c4a4482169cb37dc9cbd82baee554dd9c4be3 [file] [log] [blame]
// { dg-do compile { target c++11 } }
template <int U>
struct TypeA
{
typedef int type;
};
template <int N>
struct TypeB
{
template <int U> typename TypeA<U>::type fn();
};
struct TypeC
{
TypeB<10> b;
// This was being printed as:
// template<int N>
// decltype (((TypeC*)this)->
// TypeC::b.
// template<int U> typename TypeA<U>::type TypeB::fn [with int U = U, int N = 10, typename TypeA<U>::type = TypeA<U>::type]())
// TypeC::fn()
// we don't want to see the template header, return type, or parameter bindings
// for TypeB::fn.
template <int N> auto fn() -> decltype(b.fn<N>()); // { dg-bogus "typename" }
};
int main()
{
TypeC().fn<4>(1); // { dg-error "no match" }
}