Boost logo

Boost Users :

Subject: Re: [Boost-users] [Boost-announce] Boost 1.60.0 rc1 is now available
From: Jan Mikkelsen (janm_at_[hidden])
Date: 2015-12-16 19:23:53


Hi,

(Resending to avoid bouncing on the lists.)

I can build the libraries on FreeBSD 10.2 with clang 3.7 and gcc 5.2 in various modes.

However, with both clang 3.7 and gcc 5.2 the following program fails to compile:

        #define BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
        #include <boost/thread.hpp>
        int main() { }

This works fine with the same compilers and boost 1.59.

The difference seems to be caused a change to boost/thread/detail/thread_group.hpp to use boost::csbl::unique_ptr<> instead of std::auto_ptr<>.

Diff showing the change between 1.59 and 1.60 in thread_group.hpp and the compiler error messages below.

Regards,

Jan Mikkelsen

$ diff -u thread/detail/thread_group.hpp ../../boost-1_60/boost/thread/detail/thread_group.hpp
--- thread/detail/thread_group.hpp 2015-12-17 01:08:28.000000000 +1100
+++ ../../boost-1_60/boost/thread/detail/thread_group.hpp 2015-12-17 01:20:56.000000000 +1100
@@ -6,6 +6,7 @@
 // (C) Copyright 2007-9 Anthony Williams
 
 #include <list>
+#include <boost/thread/csbl/memory/unique_ptr.hpp>
 #include <boost/thread/shared_mutex.hpp>
 #include <boost/thread/mutex.hpp>
 #include <boost/thread/lock_guard.hpp>
@@ -75,7 +76,7 @@
         thread* create_thread(F threadfunc)
         {
             boost::lock_guard<shared_mutex> guard(m);
- std::auto_ptr<thread> new_thread(new thread(threadfunc));
+ boost::csbl::unique_ptr<thread> new_thread(new thread(threadfunc));
             threads.push_back(new_thread.get());
             return new_thread.release();
         }

$ g++5 -std=c++14 -isystem /usr/local/include/boost-1_60 twio/test_thread.cpp
In file included from /usr/local/include/boost-1_60/boost/thread/csbl/memory/unique_ptr.hpp:16:0,
                 from /usr/local/include/boost-1_60/boost/thread/detail/thread_group.hpp:9,
                 from /usr/local/include/boost-1_60/boost/thread/thread.hpp:13,
                 from /usr/local/include/boost-1_60/boost/thread.hpp:13,
                 from twio/test_thread.cpp:2:
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp: In constructor 'boost::movelib::unique_ptr<T, D>::unique_ptr(boost::movelib::unique_ptr<T, D>&&)':
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:530:29: error: 'move_if_not_lvalue_reference' is not a member of 'boost'
       : m_data(u.release(), ::boost::move_if_not_lvalue_reference<D>(u.get_deleter()))
                             ^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:530:68: error: expected primary-expression before '>' token
       : m_data(u.release(), ::boost::move_if_not_lvalue_reference<D>(u.get_deleter()))
                                                                    ^
In file included from /usr/local/include/boost-1_60/boost/thread/csbl/memory/unique_ptr.hpp:16:0,
                 from /usr/local/include/boost-1_60/boost/thread/detail/thread_group.hpp:9,
                 from /usr/local/include/boost-1_60/boost/thread/thread.hpp:13,
                 from /usr/local/include/boost-1_60/boost/thread.hpp:13,
                 from twio/test_thread.cpp:2:
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp: In constructor 'boost::movelib::unique_ptr<T, D>::unique_ptr(boost::movelib::unique_ptr<Y, D>&&, typename boost::move_upd::enable_up_moveconv_constr<T, D, U, E>::type*)':
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:552:29: error: 'move_if_not_lvalue_reference' is not a member of 'boost'
       : m_data(u.release(), ::boost::move_if_not_lvalue_reference<E>(u.get_deleter()))
                             ^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:552:68: error: expected primary-expression before '>' token
       : m_data(u.release(), ::boost::move_if_not_lvalue_reference<E>(u.get_deleter()))
                                                                    ^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp: In member function 'boost::movelib::unique_ptr<T, D>& boost::movelib::unique_ptr<T, D>::operator=(boost::movelib::unique_ptr<T, D>&&)':
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:581:26: error: 'move_if_not_lvalue_reference' is not a member of 'boost'
       m_data.deleter() = ::boost::move_if_not_lvalue_reference<D>(u.get_deleter());
                          ^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:581:65: error: expected primary-expression before '>' token
       m_data.deleter() = ::boost::move_if_not_lvalue_reference<D>(u.get_deleter());
                                                                 ^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp: In member function 'typename boost::move_upd::enable_up_moveconv_assign<T, D, U, E, boost::movelib::unique_ptr<T, D>&>::type boost::movelib::unique_ptr<T, D>::operator=(boost::movelib::unique_ptr<Y, D>&&)':
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:603:26: error: 'move_if_not_lvalue_reference' is not a member of 'boost'
       m_data.deleter() = ::boost::move_if_not_lvalue_reference<E>(u.get_deleter());
                          ^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:603:65: error: expected primary-expression before '>' token
       m_data.deleter() = ::boost::move_if_not_lvalue_reference<E>(u.get_deleter());
                                                                 ^
$ clang++37 -std=c++14 -isystem /usr/local/include/boost-1_60 twio/test_thread.cpp
In file included from twio/test_thread.cpp:2:
In file included from /usr/local/include/boost-1_60/boost/thread.hpp:13:
In file included from /usr/local/include/boost-1_60/boost/thread/thread.hpp:13:
In file included from /usr/local/include/boost-1_60/boost/thread/detail/thread_group.hpp:9:
In file included from /usr/local/include/boost-1_60/boost/thread/csbl/memory/unique_ptr.hpp:16:
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:530:67: error: 'D' does
      not refer to a value
      : m_data(u.release(), ::boost::move_if_not_lvalue_reference<D>(u.g...
                                                                  ^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:353:26: note: declared
      here
template <class T, class D = default_delete<T> >
                         ^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:530:38: error: no member
      named 'move_if_not_lvalue_reference' in namespace 'boost'
      : m_data(u.release(), ::boost::move_if_not_lvalue_reference<D>(u.g...
                            ~~~~~~~~~^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:552:67: error: 'E' does
      not refer to a value
      : m_data(u.release(), ::boost::move_if_not_lvalue_reference<E>(u.g...
                                                                  ^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:548:29: note: declared
      here
   template <class U, class E>
                            ^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:552:38: error: no member
      named 'move_if_not_lvalue_reference' in namespace 'boost'
      : m_data(u.release(), ::boost::move_if_not_lvalue_reference<E>(u.g...
                            ~~~~~~~~~^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:581:64: error: 'D' does
      not refer to a value
      m_data.deleter() = ::boost::move_if_not_lvalue_reference<D>(u.get_...
                                                               ^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:353:26: note: declared
      here
template <class T, class D = default_delete<T> >
                         ^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:581:35: error: no member
      named 'move_if_not_lvalue_reference' in namespace 'boost'
      m_data.deleter() = ::boost::move_if_not_lvalue_reference<D>(u.get_...
                         ~~~~~~~~~^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:603:64: error: 'E' does
      not refer to a value
      m_data.deleter() = ::boost::move_if_not_lvalue_reference<E>(u.get_...
                                                               ^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:597:29: note: declared
      here
   template <class U, class E>
                            ^
/usr/local/include/boost-1_60/boost/move/unique_ptr.hpp:603:35: error: no member
      named 'move_if_not_lvalue_reference' in namespace 'boost'
      m_data.deleter() = ::boost::move_if_not_lvalue_reference<E>(u.get_...
                         ~~~~~~~~~^
8 errors generated.

> On 15 Dec 2015, at 02:54, Marshall Clow <mclow.lists_at_[hidden] <mailto:mclow.lists_at_[hidden]>> wrote:
>
> Release candidate files for 1.60.0 are available at: http://boost.cowic.de/rc/ <http://boost.cowic.de/rc/>
>
> As always, the release managers would appreciate it if you download
> the candidate of your choice and give building it a try. Please report
> both success and failure, and anything else that is noteworthy.
>
> This helps ensure the candidates build OK before we push them out to SourceForge.
>
> The files (and associated md5s) are:
> MD5 (boost_1_60_0_rc1.7z) = 7ce7f5a4e396484da8da6b60d4ed7661
> MD5 (boost_1_60_0_rc1.tar.bz2) = 65a840e1a0b13a558ff19eeb2c4f0cbe
> MD5 (boost_1_60_0_rc1.tar.gz) = 28f58b9a33469388302110562bdf6188
> MD5 (boost_1_60_0_rc1.zip) = 0cc5b9cf9ccdf26945b225c7338b4288
>
> Thanks!
>
> -- The release managers
>
> P.S. Release notes are here: http://www.boost.org/users/history/version_1_60_0.html <http://www.boost.org/users/history/version_1_60_0.html>
>
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-announce <http://lists.boost.org/mailman/listinfo.cgi/boost-announce>



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net