brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · f6b94ef Raw
65 lines · cpp
1// RUN: %clang_cc1 -ast-print -std=c++14 %s -v -o %t.1.cpp2// RUN: %clang_cc1 -ast-print -std=c++14 %t.1.cpp -o %t.2.cpp3// RUN: diff %t.1.cpp %t.2.cpp4 5// Specializations6 7template<typename T> class C0 {};8template<> class C0<long> {};9template<> class C0<long*> {};10C0<int> c0;11 12template<int N> class C1 {};13template<> class C1<11> {};14C1<2> c1a;15C1<4> c1b;16 17template<typename T> class C2a {};18template<typename T> class C2b {};19template<template<typename T> class TC> class C2 {};20template<> class C2<C2a> {};21C2<C2b> c2;22 23 24// Default arguments25 26template<typename T = int> class C10 {};27template<int N = 10> class C11 {};28template<typename T, int N = 22> class C12a {};29//FIXME: template<template<typename T, int N> class TC = C12a> class C12 {};30//FIXME: template<template<typename T> class TC = C12a> class C13 {};31 32 33// Partial specializations34 35template<typename T, typename U> struct C20 {36    T a;37    U b;38};39template<typename T> struct C20<T, int> {40    T a;41};42 43template<int N, typename U> struct C21 {44    U a;45    U b[N];46};47template<int N> struct C21<N, int> {48    int a[N];49};50 51template<template<typename T2> class TC, typename U> struct C22 {52    TC<U> a;53    U b;54};55template<template<typename T2> class TC> struct C22<TC, int> {56    TC<int> a;57};58 59 60// Declaration only61template<typename T> class C30;62template<> class C30<long>;63template<> class C30<long*>;64extern C30<int> c30;65