Init
This commit is contained in:
57
cppdraft/derivation.md
Normal file
57
cppdraft/derivation.md
Normal file
@@ -0,0 +1,57 @@
|
||||
[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)
|
||||
Reference in New Issue
Block a user