Opened 9 years ago

Closed 8 years ago

#9424 closed Bugs (fixed)

Build failures using unordered and Sun 5.12 compiler

Reported by: lukester_null@… Owned by: Daniel James
Milestone: To Be Determined Component: unordered
Version: Boost 1.55.0 Severity: Problem
Keywords: Cc:

Description

#include <boost/unordered/unordered_map.hpp>

int main(int argc, char *argv[])
{
        return 0;
}

Yields

"../boost_1_55_0/boost/unordered/detail/allocate.hpp", line 908: Error: Templates can only declare classes or functions.
"../boost_1_55_0/boost/unordered/detail/allocate.hpp", line 908: Error: Templates can only declare classes or functions.
"../boost_1_55_0/boost/unordered/detail/allocate.hpp", line 908: Error: Templates can only declare classes or functions.
"../boost_1_55_0/boost/unordered/detail/allocate.hpp", line 908: Error: 

<snip>

Looks like the scoping of the length template is wrong:

--- allocate.hpp-orig   2013-11-22 15:36:29.556400000 +0000
+++ allocate.hpp        2013-11-22 15:50:13.154595000 +0000
@@ -879,7 +879,7 @@
 #   define BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(n, namespace_)              \
     template<typename Alloc, typename T>                                    \
     void construct_from_tuple_impl(                                         \
-            boost::unordered::detail::length<0>, Alloc&, T* ptr,            \
+            boost::unordered::detail::func::length<0>, Alloc&, T* ptr,      \
             namespace_ tuple<>)                                             \
     {                                                                       \
         new ((void*) ptr) T();                                              \
@@ -892,7 +892,7 @@
     template<typename Alloc, typename T,                                    \
         BOOST_PP_ENUM_PARAMS_Z(z, n, typename A)>                           \
     void construct_from_tuple_impl(                                         \
-            boost::unordered::detail::length<n>, Alloc&, T* ptr,            \
+            boost::unordered::detail::func::length<n>, Alloc&, T* ptr,      \
             namespace_ tuple<BOOST_PP_ENUM_PARAMS_Z(z, n, A)> const& x)     \
     {                                                                       \
         new ((void*) ptr) T(                                                \
@@ -921,7 +921,7 @@
     void construct_from_tuple(Alloc& alloc, T* ptr, Tuple const& x)
     {
         construct_from_tuple_impl(
-            boost::unordered::detail::length<
+            boost::unordered::detail::func::length<
                 boost::tuples::length<Tuple>::value>(),
             alloc, ptr, x);
     }

Thanks

Luke Elliott.

Change History (2)

comment:1 by Daniel James, 9 years ago

(In [86792]) Fix unordered on Sun 5.12 compiler. Refs #9424.

comment:2 by Daniel James, 8 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.