[basic.scope.class]

# 6 Basics [[basic]](./#basic)

## 6.4 Scope [[basic.scope]](basic.scope#class)

### 6.4.7 Class scope [basic.scope.class]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/basic.tex#L1528)

Any declaration of a class or class template C introduces
a [*class scope*](#def:scope,class "6.4.7 Class scope [basic.scope.class]") that includes the [*member-specification*](class.mem.general#nt:member-specification "11.4.1 General [class.mem.general]") of
the [*class-specifier*](class.pre#nt:class-specifier "11.1 Preamble [class.pre]") for C (if any)[.](#1.sentence-1)

For each non-friend redeclaration or specialization
whose target scope is or is contained by the scope,
the portion after the[*declarator-id*](dcl.decl.general#nt:declarator-id "9.3.1 General [dcl.decl.general]"),[*class-head-name*](class.pre#nt:class-head-name "11.1 Preamble [class.pre]"), or[*enum-head-name*](dcl.enum#nt:enum-head-name "9.8.1 Enumeration declarations [dcl.enum]") is also included in the scope[.](#1.sentence-2)

[*Note [1](#note-1)*:

Lookup from a program point
before the [*class-specifier*](class.pre#nt:class-specifier "11.1 Preamble [class.pre]") of a class
will find no bindings in the class scope[.](#1.sentence-3)

[*Example [1](#example-1)*: template<class D>struct B { D::type x; // #1};

struct A { using type = int; };struct C : A, B<C> {}; // error at #1: C​::​type not found â *end example*]

â *end note*]
