Changeset 973a268 in mainline


Ignore:
Timestamp:
2018-07-05T21:41:18Z (6 years ago)
Author:
Dzejrou <dzejrou@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0806544
Parents:
4c58668
git-author:
Jaroslav Jindrak <dzejrou@…> (2017-11-23 23:24:21)
git-committer:
Dzejrou <dzejrou@…> (2018-07-05 21:41:18)
Message:

cpp: added addressof

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/cpp/include/impl/memory.hpp

    r4c58668 r973a268  
    268268
    269269    template<class T>
     270    T* addressof(T& x) noexcept;
     271
     272    template<class T>
    270273    class allocator
    271274    {
     
    301304
    302305            pointer address(reference x) const noexcept
    303             { // TODO: see std::addressof
    304                 return &x;
     306            {
     307                return addressof(x);
    305308            }
    306309
    307310            const_pointer address(const_reference x) const noexcept
    308             { // TODO: see std::addressof
    309                 return &x;
     311            {
     312                return addressof(x);
    310313            }
    311314
     
    373376    template<class T>
    374377    T* addressof(T& x) noexcept
    375     { // TODO: This should actually work even with overloaded operator&.
    376         return &x;
    377     }
     378    {
     379        return reinterpret_cast<T*>(
     380            &const_cast<char&>(
     381                reinterpret_cast<const volatile char&>(x)
     382        ));
     383    }
     384
     385    template<class Iterator>
     386    struct iterator_traits;
    378387
    379388    template<class InputIterator, class ForwardIterator>
Note: See TracChangeset for help on using the changeset viewer.