[Boost-bugs] [Boost C++ Libraries] #1737: Add AllocatorConcept to BCCL

Subject: [Boost-bugs] [Boost C++ Libraries] #1737: Add AllocatorConcept to BCCL
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2008-03-31 15:07:01


#1737: Add AllocatorConcept to BCCL
------------------------------------------------+---------------------------
 Reporter: mfawcett | Owner: jsiek
     Type: Feature Requests | Status: new
Milestone: Boost 1.36.0 | Component: concept_check
  Version: Boost Development Trunk | Severity: Not Applicable
 Keywords: concept_check, concepts, allocator |
------------------------------------------------+---------------------------
 It would be convenient to have an AllocatorConcept in the Boost Concept
 Check Library. Below is a nearly complete implementation.

 -- code --

 namespace boost {

 template <typename T>
 struct AllocatorConcept {
        typedef typename T::const_pointer const_pointer;
        typedef typename T::const_reference const_reference;
        typedef typename T::difference_type difference_type;
        typedef typename T::pointer pointer;
        typedef typename T::reference reference;
        typedef typename T::size_type size_type;
        typedef typename T::value_type value_type;
        // TODO: Do we need to do more here, e.g.
 char_allocator_type::rebind<value_type>::other == T?
        typedef typename T::template rebind<char>::other
 char_allocator_type;

        BOOST_CLASS_REQUIRE(T, boost, DefaultConstructibleConcept);
        BOOST_CLASS_REQUIRE(T, boost, CopyConstructibleConcept);
        BOOST_CLASS_REQUIRE(T, boost, EqualityComparableConcept);

        void constraints() {
                pointer p = 0;
                reference ref = *p;
                const_reference cref = *p;

                p = value.address(ref);
                const_pointer cp = value.address(cref);

                p = value.allocate(1);
                p = value.allocate(1, 0);

                value.construct(p, *p);

                value.deallocate(p, 1);

                value.destroy(p);

                size_type s = value.max_size();
        }

 private:
        T value;
 };
 }

--
Ticket URL: <http://svn.boost.org/trac/boost/ticket/1737>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.


This archive was generated by hypermail 2.1.7 : 2017-02-16 18:49:57 UTC