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 std{
|
||||
template<> struct char_traits<boost::char_architype>
|
||||
{
|
||||
// The intent is that this template is not instantiated,
|
||||
// but this typedef gives us a chance of compilation in
|
||||
// case it is:
|
||||
typedef boost::char_architype char_type;
|
||||
};
|
||||
//
|
||||
// We should never use this, if we do it should be an error:
|
||||
//
|
||||
template<> struct char_traits<boost::char_architype>;
|
||||
}
|
||||
//
|
||||
// Allocator architype:
|
||||
@ -412,6 +409,10 @@ struct BaseRegexConcept
|
||||
Regex e5(in1, in2, m_flags);
|
||||
ignore_unused_variable_warning(e5);
|
||||
|
||||
// equals:
|
||||
e1 == e2;
|
||||
e1 != e2;
|
||||
|
||||
// assign etc:
|
||||
Regex e;
|
||||
e = m_pointer;
|
||||
|
@ -533,7 +533,21 @@ public:
|
||||
return status() - that.status();
|
||||
if(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
|
||||
{
|
||||
|
Reference in New Issue
Block a user