Move TagList's code to get tag order into its own function.
Move TagList's code to get tag order into its own function.

Also uses a lambda instead of binding.

--- a/src/in_xsf_framework/TagList.cpp
+++ b/src/in_xsf_framework/TagList.cpp
@@ -12,6 +12,11 @@
 using namespace std::placeholders;
 
 eq_str TagList::eqstr;
+
+auto TagList::GetTagOrder(const std::string &name) const -> TagsList::const_iterator
+{
+	return std::find_if(this->tagsOrder.begin(), this->tagsOrder.end(), [&](const std::string &tag) { return TagList::eqstr(tag, name); });
+}
 
 auto TagList::GetKeys() const -> const TagsList &
 {
@@ -28,7 +33,7 @@
 
 bool TagList::Exists(const std::string &name) const
 {
-	return std::find_if(this->tagsOrder.begin(), this->tagsOrder.end(), std::bind(TagList::eqstr, _1, name)) != this->tagsOrder.end();
+	return this->GetTagOrder(name) != this->tagsOrder.end();
 }
 
 std::string TagList::operator[](const std::string &name) const
@@ -41,8 +46,8 @@
 
 std::string &TagList::operator[](const std::string &name)
 {
-	auto tag = std::find_if(this->tagsOrder.begin(), this->tagsOrder.end(), std::bind(TagList::eqstr, _1, name));
-	if (tag == this->tagsOrder.end())
+	auto tagOrder = this->GetTagOrder(name);
+	if (tagOrder == this->tagsOrder.end())
 	{
 		this->tagsOrder.push_back(name);
 		this->tags[name] = "";
@@ -52,7 +57,7 @@
 
 void TagList::Remove(const std::string &name)
 {
-	auto tagOrder = std::find_if(this->tagsOrder.begin(), this->tagsOrder.end(), std::bind(TagList::eqstr, _1, name));
+	auto tagOrder = this->GetTagOrder(name);
 	if (tagOrder != this->tagsOrder.end())
 		this->tagsOrder.erase(tagOrder);
 	if (this->tags.count(name))

--- a/src/in_xsf_framework/TagList.h
+++ b/src/in_xsf_framework/TagList.h
@@ -23,6 +23,8 @@
 
 	Tags tags;
 	TagsList tagsOrder;
+
+	TagsList::const_iterator GetTagOrder(const std::string &name) const;
 public:
 	TagList() : tags(), tagsOrder() { }
 	const TagsList &GetKeys() const;