Change the way input_output_iterator_tag is convertible to

output_iterator_tag from inheritance to implicit conversion operator,
to avoid some tag dispatch ambiguities.


[SVN r20868]
This commit is contained in:
Dave Abrahams
2003-11-19 22:03:48 +00:00
parent 6270de1db0
commit 22670777b8

View File

@ -37,7 +37,19 @@ namespace boost { struct use_default; }
namespace boost { namespace detail {
struct input_output_iterator_tag
: std::input_iterator_tag, std::output_iterator_tag {};
: std::input_iterator_tag
{
// Using inheritance for only input_iterator_tag helps to avoid
// ambiguities when a stdlib implementation dispatches on a
// function which is overloaded on both input_iterator_tag and
// output_iterator_tag, as STLPort does, in its __valid_range
// function. I claim it's better to avoid the ambiguity in these
// cases.
operator std::output_iterator_tag() const
{
return std::output_iterator_tag();
}
};
//
// True iff the user has explicitly disabled writability of this