Compiler projects using llvm
// RUN: %clang_cc1 -fsyntax-only -ast-print %s | FileCheck %s

template <typename T, typename U = double> class Foo;

template <> class Foo<int, double> { int method1(); };

using int_type = int;

int Foo<int_type, double>::method1() {
  // CHECK: int Foo<int_type, double>::method1()
  return 10;
}

int test_typedef() {
  typedef Foo<int, double> TypedefArg;
  // CHECK: typedef Foo<int, double> TypedefArg;
  return 10;
}

int test_typedef2() {
  typedef Foo<int> TypedefArg;
  // CHECK: typedef Foo<int> TypedefArg;
  return 10;
}