Skip to content
This repository was archived by the owner on Aug 16, 2024. It is now read-only.

Commit 6804319

Browse files
authored
Merge pull request #82 from cyanray/revert-80-dev/cyanray
Revert "提升 MessageChain 的易用性."
2 parents 89872bb + 6680871 commit 6804319

File tree

2 files changed

+11
-37
lines changed

2 files changed

+11
-37
lines changed

include/mirai/defs/message_chain.hpp

Lines changed: 6 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -34,33 +34,16 @@ namespace Cyan
3434
typedef vector<std::shared_ptr<IMessage>>::iterator iterator;
3535

3636
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);
4439
MessageChain();
4540
MessageChain(const MessageChain& mc);
4641
MessageChain(MessageChain&& mc) noexcept;
4742
MessageChain& operator=(const MessageChain& mc);
4843
MessageChain& operator=(MessageChain&& mc) noexcept;
4944
MessageChain& operator+(const MessageChain& mc);
5045
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);
6447
bool operator==(const MessageChain& mc) const;
6548
bool operator!=(const MessageChain& mc) const;
6649
std::shared_ptr<IMessage> operator[](int i);
@@ -134,11 +117,6 @@ namespace Cyan
134117
return messages_.size();
135118
}
136119

137-
bool Empty() const
138-
{
139-
return Count() == 0;
140-
}
141-
142120
void Clear()
143121
{
144122
messages_.clear();
@@ -240,18 +218,8 @@ namespace Cyan
240218
vector<std::shared_ptr<IMessage>> messages_;
241219
};
242220

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)
255223
{
256224
mc.messages_.insert(mc.messages_.begin(), std::make_shared<PlainMessage>(str));
257225
return mc;
@@ -262,6 +230,7 @@ namespace Cyan
262230
mc.messages_.insert(mc.messages_.begin(), std::make_shared<PlainMessage>(str));
263231
return mc;
264232
}
233+
265234
}
266235

267236

src/message_chain.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ namespace Cyan
6666
return this->Plain(val);
6767
}
6868

69+
MessageChain& MessageChain::operator+=(const string& val)
70+
{
71+
return this->Plain(val);
72+
}
73+
6974
bool MessageChain::operator==(const MessageChain& mc) const
7075
{
7176
if (this->messages_.size() != mc.messages_.size()) return false;

0 commit comments

Comments
 (0)