1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s 2ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregornamespace N1 { 3ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor 4ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor template<typename T> struct X0 { }; // expected-note{{here}} 5ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor 6ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor namespace Inner { 7ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor template<typename T> struct X1 { }; 8ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor } 9ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor 10ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor template struct X0<int>; 11ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor template struct Inner::X1<int>; 12ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor} 13ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor 14ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregortemplate<typename T> struct X2 { }; // expected-note{{here}} 15ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor 16ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregortemplate struct ::N1::Inner::X1<float>; 17ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor 18ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregornamespace N2 { 19ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor using namespace N1; 20ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor 213e2e91e934ecf083a7c0835b58d9627ca2faddc9Richard Smith template struct X0<double>; // expected-error{{must occur in namespace 'N1'}} 22ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor 23ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor template struct X2<float>; // expected-error{{at global scope}} 24ff66803b43f2ea9206637dceb793e9505f3b9c48Douglas Gregor} 25