-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathA15-4-3.cpp
More file actions
61 lines (54 loc) · 1.17 KB
/
A15-4-3.cpp
File metadata and controls
61 lines (54 loc) · 1.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// Rule: A15-4-3
// Source line: 25957
// Original file: A15-4-3.cpp
//% $Id: A15-4-3.cpp 311495 2018-03-13 13:02:54Z michal.szczepankiewicz $
// f1.hpp
void Fn() noexcept;
// f1.cpp
// #include <f1.hpp>
void Fn() noexcept // Compliant
{
// Implementation
}
// f2.cpp
// #include <f1.hpp>
// void Fn() noexcept(false) // Non-compliant - different exception specifier
// {
// Implementation
// }
class A
{
public:
void F() noexcept;
void G() noexcept(false);
virtual void V1() noexcept = 0;
virtual void V2() noexcept(false) = 0;
};
void A::F() noexcept // Compliant
// void A::F() noexcept(false) // Non-compliant - different exception specifier
// than in declaration
{
// Implementation
}
void A::G() noexcept(false) // Compliant
// void A::G() noexcept // Non-compliant - different exception specifier than
// in declaration
{
// Implementation
}
class B : public A
{
public:
void V1() noexcept override // Compliant
// void V1() noexcept(false) override // Non-compliant - less restrictive
exception
// specifier in derived method,
// non-compilable
{
// Implementation
}
void V2() noexcept override // Compliant
{
// Implementation
}
};