Added new concept check,

removed assertion in degug allocator that was being triggered by std lib code !


[SVN r18873]
This commit is contained in:
John Maddock
2003-06-27 11:11:21 +00:00
parent 4a06f15183
commit 6f9ba7a289
3 changed files with 43 additions and 2 deletions

View File

@ -75,7 +75,11 @@ test-suite regex
pathology/recursion_test.cpp
<lib>../../test/build/boost_test_exec_monitor
]
[ compile pathology/concept_check.cpp
]
;

View File

@ -0,0 +1,38 @@
#include <boost/regex.hpp>
#include <boost/concept_archetype.hpp>
#include <boost/concept_check.hpp>
int main()
{
typedef boost::bidirectional_iterator_archetype<char> iterator_type;
boost::regex r;
iterator_type a, b;
boost::detail::dummy_constructor dummy;
boost::output_iterator_archetype<char> out(dummy);
std::string s;
boost::match_results<iterator_type> what;
boost::regex_match(a, b, r);
boost::regex_match(a, b, what, r);
boost::regex_search(a, b, r);
boost::regex_search(a, b, what, r);
out = boost::regex_replace(out, a, b, r, s, boost::match_default);
s = boost::regex_replace(s, r, s, boost::match_default);
out = what.format(out, s, boost::format_default);
s = what.format(s, boost::format_default);
boost::function_requires<
boost::ForwardIteratorConcept<
boost::regex_iterator<iterator_type>
>
>();
boost::function_requires<
boost::ForwardIteratorConcept<
boost::regex_token_iterator<iterator_type>
>
>();
}

View File

@ -157,8 +157,7 @@ public:
void deallocate(pointer p, size_type n)
{
assert( (p == 0) == (n == 0) );
if (p != 0)
if ((p != 0) && (n != 0))
base_type::deallocate((void*)p, n * sizeof(value_type));
}