view gcc/testsuite/g++.dg/template/pr54987.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

// PR c++/54987

struct Argument1
{
};

struct Argument2
{
};

template<typename T>
struct Template1
{
  Template1() {}

  template<typename Y>
  Template1( const Template1<Y>& ) {}
};

template<typename T>
struct Template2
{
  Template2() {}

  template<typename Y>
  Template2( const Template1<Y>& ) {}
};

template <typename T>
struct make_type
{
  typedef Argument1 type;
};

template<typename T>
void foo( T, Template1<typename make_type<T>::type> )
{
}

template<typename T>
void foo( T, Template2<typename make_type<T>::type> )
{
}

int main()
{
  Template1<Argument2> t;
  Argument1 a;
  foo( a, t );  // { dg-error "ambiguous" }
  return 0;
}