58 lines
2.0 KiB
Markdown
58 lines
2.0 KiB
Markdown
[derivation]
|
||
|
||
# 16 Library introduction [[library]](./#library)
|
||
|
||
## 16.4 Library-wide requirements [[requirements]](requirements#derivation)
|
||
|
||
### 16.4.6 Conforming implementations [[conforming]](conforming#derivation)
|
||
|
||
#### 16.4.6.13 Derived classes [derivation]
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L3856)
|
||
|
||
An implementation may derive any class in the C++ standard library from a class with a
|
||
name reserved to the implementation[.](#1.sentence-1)
|
||
|
||
[2](#2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L3862)
|
||
|
||
Certain classes defined in the C++ standard library are required to be derived from
|
||
other classes
|
||
in the C++ standard library[.](#2.sentence-1)
|
||
|
||
An implementation may derive such a class directly from the required base or indirectly
|
||
through a hierarchy of base classes with names reserved to the implementation[.](#2.sentence-2)
|
||
|
||
[3](#3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L3870)
|
||
|
||
In any case:
|
||
|
||
- [(3.1)](#3.1)
|
||
|
||
Every base class described asvirtual shall be virtual;
|
||
|
||
- [(3.2)](#3.2)
|
||
|
||
Every base class not specified asvirtual shall not be virtual;
|
||
|
||
- [(3.3)](#3.3)
|
||
|
||
Unless explicitly stated otherwise, types with distinct names shall be distinct
|
||
types[.](#3.sentence-1)
|
||
[*Note [1](#note-1)*:
|
||
There is an implicit exception to this rule for types that are
|
||
described as synonyms ([[dcl.typedef]](dcl.typedef "9.2.4 The typedef specifier"), [[namespace.udecl]](namespace.udecl "9.10 The using declaration")), such assize_t ([[support.types]](support.types "17.2 Common definitions")) andstreamoff ([[stream.types]](stream.types "31.2.2 Types"))[.](#3.3.sentence-2)
|
||
â *end note*]
|
||
|
||
[4](#4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L3892)
|
||
|
||
All types specified in the C++ standard library shall be non-final types
|
||
unless otherwise specified[.](#4.sentence-1)
|