http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57065



             Bug #: 57065

           Summary: incorrect default allocator template for debug and

                    profile unordered_map

    Classification: Unclassified

           Product: gcc

           Version: 4.9.0

            Status: UNCONFIRMED

          Severity: minor

          Priority: P3

         Component: libstdc++

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: theonetrueke...@yahoo.com





In libstdc++-v3/include/debug/unordered_map and

libstdc++-v3/include/profile/unorderd_map, the unordered_map template is

defined as:



  template<typename _Key, typename _Tp,

           typename _Hash = std::hash<_Key>,

           typename _Pred = std::equal_to<_Key>,

           typename _Alloc = std::allocator<_Key> >

    class unordered_map



however, the correct definition (as reflected in bits/unordered_map.h) is: 

   *  @param  Pred  Predicate function object type, defaults to

equal_to<Value>.

   *  @param  Alloc  Allocator type, defaults to allocator<Key>.

   *

   * The resulting value type of the container is std::pair<const Key, Tp>.

   */

  template<class _Key, class _Tp,

           class _Hash = hash<_Key>,

           class _Pred = std::equal_to<_Key>,

           class _Alloc = std::allocator<std::pair<const _Key, _Tp> > >

    class unordered_map



note that the comment is wrong, but the code is correct.



See also: http://www.cplusplus.com/reference/unordered_map/unordered_map/ which

matches the definition in bits/unordered_map.h



As far as I can tell, this error has existed since gcc 4.3.

Reply via email to