forked from boostorg/regex
Update concepts to check for accidental char_traits usage.
Fixes: https://github.com/boostorg/regex/issues/202.
This commit is contained in:
@ -76,13 +76,10 @@ inline long hash_value(char_architype val)
|
|||||||
//
|
//
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
namespace std{
|
namespace std{
|
||||||
template<> struct char_traits<boost::char_architype>
|
//
|
||||||
{
|
// We should never use this, if we do it should be an error:
|
||||||
// The intent is that this template is not instantiated,
|
//
|
||||||
// but this typedef gives us a chance of compilation in
|
template<> struct char_traits<boost::char_architype>;
|
||||||
// case it is:
|
|
||||||
typedef boost::char_architype char_type;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
// Allocator architype:
|
// Allocator architype:
|
||||||
@ -412,6 +409,10 @@ struct BaseRegexConcept
|
|||||||
Regex e5(in1, in2, m_flags);
|
Regex e5(in1, in2, m_flags);
|
||||||
ignore_unused_variable_warning(e5);
|
ignore_unused_variable_warning(e5);
|
||||||
|
|
||||||
|
// equals:
|
||||||
|
e1 == e2;
|
||||||
|
e1 != e2;
|
||||||
|
|
||||||
// assign etc:
|
// assign etc:
|
||||||
Regex e;
|
Regex e;
|
||||||
e = m_pointer;
|
e = m_pointer;
|
||||||
|
@ -533,7 +533,21 @@ public:
|
|||||||
return status() - that.status();
|
return status() - that.status();
|
||||||
if(flags() != that.flags())
|
if(flags() != that.flags())
|
||||||
return flags() - that.flags();
|
return flags() - that.flags();
|
||||||
return str().compare(that.str());
|
|
||||||
|
const char_type* i = m_pimpl->begin();
|
||||||
|
const char_type* j = that.m_pimpl->begin();
|
||||||
|
while ((i != m_pimpl->end()) && (j != that.m_pimpl->end()))
|
||||||
|
{
|
||||||
|
if (*i != *j)
|
||||||
|
return *i < *j ? -1 : 1;
|
||||||
|
++i;
|
||||||
|
++j;
|
||||||
|
}
|
||||||
|
if (i != m_pimpl->end())
|
||||||
|
return *i > static_cast<char_type>(0) ? 1 : -1;
|
||||||
|
if (j != that.m_pimpl->end())
|
||||||
|
return *j > static_cast<char_type>(0) ? -1 : 1;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
bool operator==(const basic_regex& e)const
|
bool operator==(const basic_regex& e)const
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user