From Jason Turner

[string.op.plus]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp5pym0go8/{from.md → to.md} +142 -0
tmp/tmp5pym0go8/{from.md → to.md} RENAMED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #### `operator+` <a id="string.op.plus">[[string.op.plus]]</a>
2
+
3
+ ``` cpp
4
+ template<class charT, class traits, class Allocator>
5
+ constexpr basic_string<charT, traits, Allocator>
6
+ operator+(const basic_string<charT, traits, Allocator>& lhs,
7
+ const basic_string<charT, traits, Allocator>& rhs);
8
+ template<class charT, class traits, class Allocator>
9
+ constexpr basic_string<charT, traits, Allocator>
10
+ operator+(const basic_string<charT, traits, Allocator>& lhs, const charT* rhs);
11
+ ```
12
+
13
+ *Effects:* Equivalent to:
14
+
15
+ ``` cpp
16
+ basic_string<charT, traits, Allocator> r = lhs;
17
+ r.append(rhs);
18
+ return r;
19
+ ```
20
+
21
+ ``` cpp
22
+ template<class charT, class traits, class Allocator>
23
+ constexpr basic_string<charT, traits, Allocator>
24
+ operator+(basic_string<charT, traits, Allocator>&& lhs,
25
+ const basic_string<charT, traits, Allocator>& rhs);
26
+ template<class charT, class traits, class Allocator>
27
+ constexpr basic_string<charT, traits, Allocator>
28
+ operator+(basic_string<charT, traits, Allocator>&& lhs, const charT* rhs);
29
+ ```
30
+
31
+ *Effects:* Equivalent to:
32
+
33
+ ``` cpp
34
+ lhs.append(rhs);
35
+ return std::move(lhs);
36
+ ```
37
+
38
+ ``` cpp
39
+ template<class charT, class traits, class Allocator>
40
+ constexpr basic_string<charT, traits, Allocator>
41
+ operator+(basic_string<charT, traits, Allocator>&& lhs,
42
+ basic_string<charT, traits, Allocator>&& rhs);
43
+ ```
44
+
45
+ *Effects:* Equivalent to:
46
+
47
+ ``` cpp
48
+ lhs.append(rhs);
49
+ return std::move(lhs);
50
+ ```
51
+
52
+ except that both `lhs` and `rhs` are left in valid but unspecified
53
+ states.
54
+
55
+ [*Note 1*: If `lhs` and `rhs` have equal allocators, the implementation
56
+ may move from either. — *end note*]
57
+
58
+ ``` cpp
59
+ template<class charT, class traits, class Allocator>
60
+ constexpr basic_string<charT, traits, Allocator>
61
+ operator+(const basic_string<charT, traits, Allocator>& lhs,
62
+ basic_string<charT, traits, Allocator>&& rhs);
63
+ template<class charT, class traits, class Allocator>
64
+ constexpr basic_string<charT, traits, Allocator>
65
+ operator+(const charT* lhs, basic_string<charT, traits, Allocator>&& rhs);
66
+ ```
67
+
68
+ *Effects:* Equivalent to:
69
+
70
+ ``` cpp
71
+ rhs.insert(0, lhs);
72
+ return std::move(rhs);
73
+ ```
74
+
75
+ ``` cpp
76
+ template<class charT, class traits, class Allocator>
77
+ constexpr basic_string<charT, traits, Allocator>
78
+ operator+(const charT* lhs, const basic_string<charT, traits, Allocator>& rhs);
79
+ ```
80
+
81
+ *Effects:* Equivalent to:
82
+
83
+ ``` cpp
84
+ basic_string<charT, traits, Allocator> r = rhs;
85
+ r.insert(0, lhs);
86
+ return r;
87
+ ```
88
+
89
+ ``` cpp
90
+ template<class charT, class traits, class Allocator>
91
+ constexpr basic_string<charT, traits, Allocator>
92
+ operator+(charT lhs, const basic_string<charT, traits, Allocator>& rhs);
93
+ ```
94
+
95
+ *Effects:* Equivalent to:
96
+
97
+ ``` cpp
98
+ basic_string<charT, traits, Allocator> r = rhs;
99
+ r.insert(r.begin(), lhs);
100
+ return r;
101
+ ```
102
+
103
+ ``` cpp
104
+ template<class charT, class traits, class Allocator>
105
+ constexpr basic_string<charT, traits, Allocator>
106
+ operator+(charT lhs, basic_string<charT, traits, Allocator>&& rhs);
107
+ ```
108
+
109
+ *Effects:* Equivalent to:
110
+
111
+ ``` cpp
112
+ rhs.insert(rhs.begin(), lhs);
113
+ return std::move(rhs);
114
+ ```
115
+
116
+ ``` cpp
117
+ template<class charT, class traits, class Allocator>
118
+ constexpr basic_string<charT, traits, Allocator>
119
+ operator+(const basic_string<charT, traits, Allocator>& lhs, charT rhs);
120
+ ```
121
+
122
+ *Effects:* Equivalent to:
123
+
124
+ ``` cpp
125
+ basic_string<charT, traits, Allocator> r = lhs;
126
+ r.push_back(rhs);
127
+ return r;
128
+ ```
129
+
130
+ ``` cpp
131
+ template<class charT, class traits, class Allocator>
132
+ constexpr basic_string<charT, traits, Allocator>
133
+ operator+(basic_string<charT, traits, Allocator>&& lhs, charT rhs);
134
+ ```
135
+
136
+ *Effects:* Equivalent to:
137
+
138
+ ``` cpp
139
+ lhs.push_back(rhs);
140
+ return std::move(lhs);
141
+ ```
142
+