Commit a38fe535 by Jason Merrill

x

From-SVN: r21351
parent 7e776093
// Build don't link:
// Tests partial specialization
template<class T> struct foo1 {};
template<class T, int n> struct foo1<T[n]>;
foo1<char> bar1;
foo1<char[10]> baz1; // ERROR - incomplete type
template<class T> struct foo2 {};
template<class T, unsigned n> struct foo2<T[n]>;
foo2<char> bar2;
foo2<char[10]> baz2; // ERROR - incomplete type
typedef unsigned int other1_t;
template<class T> struct foo3 {};
template<class T, other1_t n> struct foo3<T[n]>;
foo3<char> bar3;
foo3<char[10]> baz3; // ERROR - incomplete type - XFAIL *-*-*
typedef int other2_t;
template<class T> struct foo4 {};
template<class T, other1_t n> struct foo4<T[n]>;
foo4<char> bar4;
foo4<char[10]> baz4; // ERROR - incomplete type - XFAIL *-*-*
template <class T, unsigned N>
unsigned size(T (&)[N]) { return N; }
template <class T, unsigned N>
unsigned size(T const (&)[N]) { return N; }
main() {
short iarray[] = { 1, 2, 3, 4, 5 };
const short carray[] = { 1, 2, 3, 4, 5 };
return size(iarray) - size(carray);
}
struct V { virtual ~V() {} };
template <class T> struct A : virtual V { };
template <class T> struct B {
virtual void f() { T foo; }
};
int main() { B< A<int> > bar; }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment