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@gmail.com> wrote:

Release candidate files for 1.60.0 are available at: 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

_______________________________________________