a few edits

[SVN r21470]
This commit is contained in:
Jeremy Siek
2004-01-04 04:27:43 +00:00
parent 798562e75b
commit f0248daa1e

View File

@ -16,19 +16,20 @@
#include <boost/static_assert.hpp> #include <boost/static_assert.hpp>
#include <boost/type_traits/same_traits.hpp> #include <boost/type_traits/same_traits.hpp>
struct incomplete;
struct none { }; struct none { };
void blah(none) { } void see_type(none) { }
struct zow { }; struct zow { };
struct my_ptr1 { struct my_ptr1 {
typedef const volatile zow element_type; typedef const zow element_type;
}; };
struct my_ptr2 { }; struct my_ptr2 { };
namespace boost { namespace boost {
template <> struct referent<my_ptr2> { template <> struct referent<my_ptr2> {
typedef const volatile zow type; typedef const zow type;
}; };
} }
@ -41,7 +42,7 @@ int main()
/* Category = */ boost::use_default, /* Category = */ boost::use_default,
/* Reference = */ boost::use_default, /* Reference = */ boost::use_default,
/* Difference = */ boost::use_default> Iter; /* Difference = */ boost::use_default> Iter;
BOOST_STATIC_ASSERT((boost::is_same<Iter::value_type, int>::value)); BOOST_STATIC_ASSERT((boost::is_same<Iter::value_type, int>::value));
BOOST_STATIC_ASSERT((boost::is_same<Iter::reference, int&>::value)); BOOST_STATIC_ASSERT((boost::is_same<Iter::reference, int&>::value));
BOOST_STATIC_ASSERT((boost::is_same<Iter::pointer, int*>::value)); BOOST_STATIC_ASSERT((boost::is_same<Iter::pointer, int*>::value));
@ -59,10 +60,10 @@ int main()
/* Category = */ boost::use_default, /* Category = */ boost::use_default,
/* Reference = */ boost::use_default, /* Reference = */ boost::use_default,
/* Difference = */ boost::use_default> Iter; /* Difference = */ boost::use_default> Iter;
BOOST_STATIC_ASSERT((boost::is_same<Iter::value_type, zow>::value)); BOOST_STATIC_ASSERT((boost::is_same<Iter::value_type, zow>::value));
BOOST_STATIC_ASSERT((boost::is_same<Iter::reference, zow&>::value)); BOOST_STATIC_ASSERT((boost::is_same<Iter::reference, const zow&>::value));
BOOST_STATIC_ASSERT((boost::is_same<Iter::pointer, zow*>::value)); BOOST_STATIC_ASSERT((boost::is_same<Iter::pointer, const zow*>::value));
BOOST_STATIC_ASSERT((boost::is_same<Iter::difference_type, std::ptrdiff_t>::value)); BOOST_STATIC_ASSERT((boost::is_same<Iter::difference_type, std::ptrdiff_t>::value));
BOOST_STATIC_ASSERT((boost::is_convertible<Iter::iterator_category, BOOST_STATIC_ASSERT((boost::is_convertible<Iter::iterator_category,
@ -70,8 +71,6 @@ int main()
BOOST_STATIC_ASSERT((boost::is_convertible<boost::iterator_traversal<Iter>::type, BOOST_STATIC_ASSERT((boost::is_convertible<boost::iterator_traversal<Iter>::type,
boost::random_access_traversal_tag>::value)); boost::random_access_traversal_tag>::value));
} }
#if 0
// This is a bug.
{ {
typedef boost::indirect_iterator< typedef boost::indirect_iterator<
my_ptr2*, my_ptr2*,
@ -81,32 +80,31 @@ int main()
/* Difference = */ boost::use_default> Iter; /* Difference = */ boost::use_default> Iter;
BOOST_STATIC_ASSERT((boost::is_same<Iter::value_type, zow>::value)); BOOST_STATIC_ASSERT((boost::is_same<Iter::value_type, zow>::value));
BOOST_STATIC_ASSERT((boost::is_same<Iter::reference, zow&>::value)); BOOST_STATIC_ASSERT((boost::is_same<Iter::reference, const zow&>::value));
BOOST_STATIC_ASSERT((boost::is_same<Iter::pointer, zow*>::value)); BOOST_STATIC_ASSERT((boost::is_same<Iter::pointer, const zow*>::value));
BOOST_STATIC_ASSERT((boost::is_same<Iter::difference_type, std::ptrdiff_t>::value));
BOOST_STATIC_ASSERT((boost::is_convertible<Iter::iterator_category,
std::random_access_iterator_tag>::value));
BOOST_STATIC_ASSERT((boost::is_convertible<boost::iterator_traversal<Iter>::type,
boost::random_access_traversal_tag>::value));
} }
#endif
{ {
typedef boost::indirect_iterator< typedef boost::indirect_iterator<
int**, int**,
const volatile int, int,
/* Category = */ boost::use_default, /* Category = */ boost::use_default,
/* Reference = */ boost::use_default, /* Reference = */ boost::use_default,
/* Difference = */ boost::use_default> Iter; /* Difference = */ boost::use_default> Iter;
BOOST_STATIC_ASSERT((boost::is_same<Iter::value_type, volatile int>::value)); BOOST_STATIC_ASSERT((boost::is_same<Iter::value_type, int>::value));
BOOST_STATIC_ASSERT((boost::is_same<Iter::reference, const volatile int&>::value)); BOOST_STATIC_ASSERT((boost::is_same<Iter::reference, int&>::value));
BOOST_STATIC_ASSERT((boost::is_same<Iter::pointer, const volatile int*>::value)); BOOST_STATIC_ASSERT((boost::is_same<Iter::pointer, int*>::value));
BOOST_STATIC_ASSERT((boost::is_same<Iter::difference_type, std::ptrdiff_t>::value)); }
{
BOOST_STATIC_ASSERT((boost::is_convertible<Iter::iterator_category, typedef boost::indirect_iterator<
std::random_access_iterator_tag>::value)); int**,
BOOST_STATIC_ASSERT((boost::is_convertible<boost::iterator_traversal<Iter>::type, const int,
boost::random_access_traversal_tag>::value)); /* Category = */ boost::use_default,
/* Reference = */ boost::use_default,
/* Difference = */ boost::use_default> Iter;
BOOST_STATIC_ASSERT((boost::is_same<Iter::value_type, int>::value));
BOOST_STATIC_ASSERT((boost::is_same<Iter::reference, const int&>::value));
BOOST_STATIC_ASSERT((boost::is_same<Iter::pointer, const int*>::value));
} }
} }