@@ -34,33 +34,16 @@ namespace Cyan
34
34
typedef vector<std::shared_ptr<IMessage>>::iterator iterator;
35
35
36
36
friend MessageChain& operator +(const string& str, MessageChain& mc);
37
-
38
- template <typename T>
39
- friend MessageChain& operator +(T&& val, MessageChain& mc);
40
-
41
- template <std::size_t N>
42
- friend MessageChain& operator +(const char (&str)[N], MessageChain& mc);
43
-
37
+ template <int N>
38
+ friend MessageChain& operator +(const char (&str)[N], MessageChain&& mc);
44
39
MessageChain ();
45
40
MessageChain (const MessageChain& mc);
46
41
MessageChain (MessageChain&& mc) noexcept ;
47
42
MessageChain& operator =(const MessageChain& mc);
48
43
MessageChain& operator =(MessageChain&& mc) noexcept ;
49
44
MessageChain& operator +(const MessageChain& mc);
50
45
MessageChain& operator +(const string& val);
51
-
52
- template <typename T>
53
- MessageChain& operator +=(T&& val)
54
- {
55
- return this ->Add (std::forward<T>(val));
56
- }
57
-
58
- template <std::size_t N>
59
- MessageChain& operator +=(const char (&val)[N])
60
- {
61
- return this ->Add <PlainMessage>(val);
62
- }
63
-
46
+ MessageChain& operator +=(const string& val);
64
47
bool operator ==(const MessageChain& mc) const ;
65
48
bool operator !=(const MessageChain& mc) const ;
66
49
std::shared_ptr<IMessage> operator [](int i);
@@ -134,11 +117,6 @@ namespace Cyan
134
117
return messages_.size ();
135
118
}
136
119
137
- bool Empty () const
138
- {
139
- return Count () == 0 ;
140
- }
141
-
142
120
void Clear ()
143
121
{
144
122
messages_.clear ();
@@ -240,18 +218,8 @@ namespace Cyan
240
218
vector<std::shared_ptr<IMessage>> messages_;
241
219
};
242
220
243
- template <typename T>
244
- inline MessageChain& operator +(T&& val, MessageChain& mc)
245
- {
246
- using real_type = typename std::remove_const<typename std::remove_reference<T>::type >::type;
247
- static_assert (std::is_base_of<IMessage, real_type>::value, " 只能接受 IMessage 的派生类" );
248
- std::shared_ptr<IMessage> m_ptr (new real_type (std::forward<T>(val)));
249
- mc.messages_ .insert (mc.messages_ .begin (), m_ptr);
250
- return mc;
251
- }
252
-
253
- template <std::size_t N>
254
- inline MessageChain& operator +(const char (&str)[N], MessageChain& mc)
221
+ template <int N>
222
+ inline MessageChain& operator +(const char (&str)[N], MessageChain&& mc)
255
223
{
256
224
mc.messages_ .insert (mc.messages_ .begin (), std::make_shared<PlainMessage>(str));
257
225
return mc;
@@ -262,6 +230,7 @@ namespace Cyan
262
230
mc.messages_ .insert (mc.messages_ .begin (), std::make_shared<PlainMessage>(str));
263
231
return mc;
264
232
}
233
+
265
234
}
266
235
267
236
0 commit comments