
Boost release 1.53.0 beta 1 is now available from SourceForge. See https://sourceforge.net/projects/boost/files/boost/1.53.0.beta.1/ This release contains numerous enhancements and bug fixes for existing libraries. For details of what's in the release, see http://www.boost.org/users/history/version_1_53_0.html. Please download the beta, give it a try, and report any problems you encounter. Thank you, -- The Boost Release Team Beman Dawes, Eric Niebler, Rene Rivera, Daniel James, Vladimir Prus and Marshall Clow.

On 01/07/2013 11:35 AM, Marshall Clow wrote:
Boost release 1.53.0 beta 1 is now available from SourceForge.
See https://sourceforge.net/projects/boost/files/boost/1.53.0.beta.1/
This release contains numerous enhancements and bug fixes for existing libraries.
For details of what's in the release, see http://www.boost.org/users/history/version_1_53_0.html.
Please download the beta, give it a try, and report any problems you encounter.
Thank you,
-- The Boost Release Team Beman Dawes, Eric Niebler, Rene Rivera, Daniel James, Vladimir Prus and Marshall Clow.
With the minimal test: #include <boost/tr1/memory.hpp> int main() { } I am getting the following using gcc 4.7.2 in C++11 mode: $ g++ -std=c++11 test.cc -I/usr/local/boost/boost_1_53_beta/include In file included from /usr/local/boost/boost_1_53_beta/include/boost/shared_ptr.hpp:17:0, from /usr/local/boost/boost_1_53_beta/include/boost/tr1/memory.hpp:56, from test.cc:1: /usr/local/boost/boost_1_53_beta/include/boost/smart_ptr/shared_ptr.hpp:782:74: error: declaration of ‘template<class T> void boost::swap(boost::shared_ptr<T>&, boost::shared_ptr<T>&) noexcept (true)’ has a different exception specifier In file included from test.cc:1:0: /usr/local/boost/boost_1_53_beta/include/boost/tr1/memory.hpp:27:24: error: from previous declaration ‘template<class T> void boost::swap(boost::shared_ptr<T>&, boost::shared_ptr<T>&)’ In file included from /usr/local/boost/boost_1_53_beta/include/boost/shared_ptr.hpp:17:0, from /usr/local/boost/boost_1_53_beta/include/boost/tr1/memory.hpp:56, from test.cc:1: /usr/local/boost/boost_1_53_beta/include/boost/smart_ptr/shared_ptr.hpp:787:89: error: declaration of ‘template<class T, class U> boost::shared_ptr<T> boost::static_pointer_cast(const boost::shared_ptr<U>&) noexcept (true)’ has a different exception specifier In file included from test.cc:1:0: /usr/local/boost/boost_1_53_beta/include/boost/tr1/memory.hpp:28:42: error: from previous declaration ‘template<class T, class U> boost::shared_ptr<T> boost::static_pointer_cast(const boost::shared_ptr<U>&)’ In file included from /usr/local/boost/boost_1_53_beta/include/boost/shared_ptr.hpp:17:0, from /usr/local/boost/boost_1_53_beta/include/boost/tr1/memory.hpp:56, from test.cc:1: /usr/local/boost/boost_1_53_beta/include/boost/smart_ptr/shared_ptr.hpp:797:88: error: declaration of ‘template<class T, class U> boost::shared_ptr<T> boost::const_pointer_cast(const boost::shared_ptr<U>&) noexcept (true)’ has a different exception specifier In file included from test.cc:1:0: /usr/local/boost/boost_1_53_beta/include/boost/tr1/memory.hpp:30:42: error: from previous declaration ‘template<class T, class U> boost::shared_ptr<T> boost::const_pointer_cast(const boost::shared_ptr<U>&)’ In file included from /usr/local/boost/boost_1_53_beta/include/boost/shared_ptr.hpp:17:0, from /usr/local/boost/boost_1_53_beta/include/boost/tr1/memory.hpp:56, from test.cc:1: /usr/local/boost/boost_1_53_beta/include/boost/smart_ptr/shared_ptr.hpp:807:90: error: declaration of ‘template<class T, class U> boost::shared_ptr<T> boost::dynamic_pointer_cast(const boost::shared_ptr<U>&) noexcept (true)’ has a different exception specifier In file included from test.cc:1:0: /usr/local/boost/boost_1_53_beta/include/boost/tr1/memory.hpp:29:42: error: from previous declaration ‘template<class T, class U> boost::shared_ptr<T> boost::dynamic_pointer_cast(const boost::shared_ptr<U>&)’ In file included from /usr/local/boost/boost_1_53_beta/include/boost/shared_ptr.hpp:17:0, from /usr/local/boost/boost_1_53_beta/include/boost/tr1/memory.hpp:56, from test.cc:1: /usr/local/boost/boost_1_53_beta/include/boost/smart_ptr/shared_ptr.hpp:927:71: error: declaration of ‘template<class D, class T> D* boost::get_deleter(const boost::shared_ptr<U>&) noexcept (true)’ has a different exception specifier In file included from test.cc:1:0: /usr/local/boost/boost_1_53_beta/include/boost/tr1/memory.hpp:31:32: error: from previous declaration ‘template<class D, class T> D* boost::get_deleter(const boost::shared_ptr<U>&)’ In file included from /usr/local/boost/boost_1_53_beta/include/boost/weak_ptr.hpp:16:0, from /usr/local/boost/boost_1_53_beta/include/boost/tr1/memory.hpp:57, from test.cc:1: /usr/local/boost/boost_1_53_beta/include/boost/smart_ptr/weak_ptr.hpp:246:63: error: declaration of ‘template<class T> void boost::swap(boost::weak_ptr<T>&, boost::weak_ptr<T>&) noexcept (true)’ has a different exception specifier In file included from test.cc:1:0: /usr/local/boost/boost_1_53_beta/include/boost/tr1/memory.hpp:26:24: error: from previous declaration ‘template<class T> void boost::swap(boost::weak_ptr<T>&, boost::weak_ptr<T>&)’ It either needs BOOST_NOEXCEPT in memory.hpp or removed in shared_ptr.hpp for the offending functions.

On Jan 18, 2013, at 5:17 PM, Ioannis Papadopoulos <ipapadop@cse.tamu.edu> wrote:
With the minimal test:
#include <boost/tr1/memory.hpp>
int main() { }
I am getting the following using gcc 4.7.2 in C++11 mode:
I tried this with clang in C++11 mode, and got similar errors. In file included from junk.cpp:1: In file included from trunk/boost/tr1/memory.hpp:56: In file included from trunk/boost/shared_ptr.hpp:17: trunk/boost/smart_ptr/shared_ptr.hpp:783:31: error: exception specification in declaration does not match previous declaration template<class T> inline void swap(shared_ptr<T> & a, shared_ptr<T> & ... ^ trunk/boost/tr1/memory.hpp:27:24: note: previous declaration is here template<class T> void swap(shared_ptr<T> & a, shared_ptr<T> & b); ^ In file included from junk.cpp:1: In file included from trunk/boost/tr1/memory.hpp:56: In file included from trunk/boost/shared_ptr.hpp:17: trunk/boost/smart_ptr/shared_ptr.hpp:788:42: error: exception specification in declaration does not match previous declaration template<class T, class U> shared_ptr<T> static_pointer_cast( ... ^ trunk/boost/tr1/memory.hpp:28:42: note: previous declaration is here template<class T, class U> shared_ptr<T> static_pointer_cast(... ^ In file included from junk.cpp:1: In file included from trunk/boost/tr1/memory.hpp:56: In file included from trunk/boost/shared_ptr.hpp:17: trunk/boost/smart_ptr/shared_ptr.hpp:798:42: error: exception specification in declaration does not match previous declaration template<class T, class U> shared_ptr<T> const_pointer_cast( ... ^ trunk/boost/tr1/memory.hpp:30:42: note: previous declaration is here template<class T, class U> shared_ptr<T> const_pointer_cast(... ^ In file included from junk.cpp:1: In file included from trunk/boost/tr1/memory.hpp:56: In file included from trunk/boost/shared_ptr.hpp:17: trunk/boost/smart_ptr/shared_ptr.hpp:808:42: error: exception specification in declaration does not match previous declaration template<class T, class U> shared_ptr<T> dynamic_pointer_cast( ... ^ trunk/boost/tr1/memory.hpp:29:42: note: previous declaration is here template<class T, class U> shared_ptr<T> dynamic_pointer_cast(... ^ In file included from junk.cpp:1: In file included from trunk/boost/tr1/memory.hpp:56: In file included from trunk/boost/shared_ptr.hpp:17: trunk/boost/smart_ptr/shared_ptr.hpp:928:32: error: exception specification in declaration does not match previous declaration template<class D, class T> D * get_deleter( shared_ptr<T> const & p ) ... ^ trunk/boost/tr1/memory.hpp:31:32: note: previous declaration is here template<class D, class T> D * get_deleter(shared_ptr<T> const & p); ^ In file included from junk.cpp:1: In file included from trunk/boost/tr1/memory.hpp:57: In file included from trunk/boost/weak_ptr.hpp:16: trunk/boost/smart_ptr/weak_ptr.hpp:246:24: error: exception specification in declaration does not match previous declaration template<class T> void swap(weak_ptr<T> & a, weak_ptr<T> & b) BOOST_NOEXCEPT ^ trunk/boost/tr1/memory.hpp:26:24: note: previous declaration is here template<class T> void swap(weak_ptr<T> & a, weak_ptr<T> & b); ^ 6 errors generated.
It either needs BOOST_NOEXCEPT in memory.hpp or removed in shared_ptr.hpp for the offending functions.
That seems like a good idea to me. In fact, there are several prototypes in memory.h that need it. here's a proposed patch: Index: boost/tr1/memory.hpp =================================================================== --- boost/tr1/memory.hpp (revision 82534) +++ boost/tr1/memory.hpp (working copy) @@ -23,12 +23,12 @@ class bad_weak_ptr; template<class T> class weak_ptr; template<class T> class shared_ptr; -template<class T> void swap(weak_ptr<T> & a, weak_ptr<T> & b); -template<class T> void swap(shared_ptr<T> & a, shared_ptr<T> & b); -template<class T, class U> shared_ptr<T> static_pointer_cast(shared_ptr<U> const & r); -template<class T, class U> shared_ptr<T> dynamic_pointer_cast(shared_ptr<U> const & r); -template<class T, class U> shared_ptr<T> const_pointer_cast(shared_ptr<U> const & r); -template<class D, class T> D * get_deleter(shared_ptr<T> const & p); +template<class T> void swap(weak_ptr<T> & a, weak_ptr<T> & b) BOOST_NOEXCEPT; +template<class T> void swap(shared_ptr<T> & a, shared_ptr<T> & b) BOOST_NOEXCEPT; +template<class T, class U> shared_ptr<T> static_pointer_cast(shared_ptr<U> const & r) BOOST_NOEXCEPT; +template<class T, class U> shared_ptr<T> dynamic_pointer_cast(shared_ptr<U> const & r) BOOST_NOEXCEPT; +template<class T, class U> shared_ptr<T> const_pointer_cast(shared_ptr<U> const & r) BOOST_NOEXCEPT; +template<class D, class T> D * get_deleter(shared_ptr<T> const & p) BOOST_NOEXCEPT; template<class T> class enable_shared_from_this; namespace detail{ With this patch, your test program compiles cleanly here. Can you test this patch on your system? -- Marshall Marshall Clow Idio Software <mailto:mclow.lists@gmail.com> A.D. 1517: Martin Luther nails his 95 Theses to the church door and is promptly moderated down to (-1, Flamebait). -- Yu Suzuki

On Jan 19, 2013, at 7:59 AM, Marshall Clow <mclow.lists@gmail.com> wrote:
On Jan 18, 2013, at 5:17 PM, Ioannis Papadopoulos <ipapadop@cse.tamu.edu> wrote:
With the minimal test:
#include <boost/tr1/memory.hpp>
int main() { }
I am getting the following using gcc 4.7.2 in C++11 mode:
I tried this with clang in C++11 mode, and got similar errors.
I've created a ticket <https://svn.boost.org/trac/boost/ticket/7907> to track this issue. -- Marshall Marshall Clow Idio Software <mailto:mclow.lists@gmail.com> A.D. 1517: Martin Luther nails his 95 Theses to the church door and is promptly moderated down to (-1, Flamebait). -- Yu Suzuki

On 01/19/2013 09:59 AM, Marshall Clow wrote:
On Jan 18, 2013, at 5:17 PM, Ioannis Papadopoulos <ipapadop@cse.tamu.edu> wrote:
[...] It either needs BOOST_NOEXCEPT in memory.hpp or removed in shared_ptr.hpp for the offending functions.
That seems like a good idea to me. In fact, there are several prototypes in memory.h that need it.
here's a proposed patch:
Index: boost/tr1/memory.hpp =================================================================== --- boost/tr1/memory.hpp (revision 82534) +++ boost/tr1/memory.hpp (working copy) @@ -23,12 +23,12 @@ class bad_weak_ptr; template<class T> class weak_ptr; template<class T> class shared_ptr; -template<class T> void swap(weak_ptr<T> & a, weak_ptr<T> & b); -template<class T> void swap(shared_ptr<T> & a, shared_ptr<T> & b); -template<class T, class U> shared_ptr<T> static_pointer_cast(shared_ptr<U> const & r); -template<class T, class U> shared_ptr<T> dynamic_pointer_cast(shared_ptr<U> const & r); -template<class T, class U> shared_ptr<T> const_pointer_cast(shared_ptr<U> const & r); -template<class D, class T> D * get_deleter(shared_ptr<T> const & p); +template<class T> void swap(weak_ptr<T> & a, weak_ptr<T> & b) BOOST_NOEXCEPT; +template<class T> void swap(shared_ptr<T> & a, shared_ptr<T> & b) BOOST_NOEXCEPT; +template<class T, class U> shared_ptr<T> static_pointer_cast(shared_ptr<U> const & r) BOOST_NOEXCEPT; +template<class T, class U> shared_ptr<T> dynamic_pointer_cast(shared_ptr<U> const & r) BOOST_NOEXCEPT; +template<class T, class U> shared_ptr<T> const_pointer_cast(shared_ptr<U> const & r) BOOST_NOEXCEPT; +template<class D, class T> D * get_deleter(shared_ptr<T> const & p) BOOST_NOEXCEPT; template<class T> class enable_shared_from_this;
namespace detail{
With this patch, your test program compiles cleanly here. Can you test this patch on your system?
-- Marshall
Marshall Clow Idio Software <mailto:mclow.lists@gmail.com>
A.D. 1517: Martin Luther nails his 95 Theses to the church door and is promptly moderated down to (-1, Flamebait). -- Yu Suzuki
With this patch, my test cases pass. Thanks

On 01/07/2013 11:35 AM, Marshall Clow wrote:
Boost release 1.53.0 beta 1 is now available from SourceForge.
See https://sourceforge.net/projects/boost/files/boost/1.53.0.beta.1/
This release contains numerous enhancements and bug fixes for existing libraries.
For details of what's in the release, see http://www.boost.org/users/history/version_1_53_0.html.
Please download the beta, give it a try, and report any problems you encounter.
Thank you,
-- The Boost Release Team Beman Dawes, Eric Niebler, Rene Rivera, Daniel James, Vladimir Prus and Marshall Clow.
OK, another problem in Boost.Fusion: #include <boost/tr1/tuple.hpp> #include <boost/tr1/functional.hpp> int a, b; std::tr1::tuple<int&, int&> get() { return std::tr1::tuple<int&, int&>(std::tr1::ref(a), std::tr1::ref(b)); } int main() { std::tr1::tuple<int&, int&> t = get(); return 0; } cannot compile with GCC 4.7.2 / C++11 when defining BOOST_FUSION_DONT_USE_PREPROCESSED_FILES: $ g++ --std=c++11 -DBOOST_FUSION_DONT_USE_PREPROCESSED_FILES test.cc -I /usr/local/boost/boost_1_53_beta/include/ In file included from /usr/local/boost/boost_1_53_beta/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:57:0, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/vector10.hpp:87, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/vector_fwd.hpp:14, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/vector.hpp:10, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/tuple/tuple.hpp:11, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/tuple.hpp:10, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/include/tuple.hpp:10, from /usr/local/boost/boost_1_53_beta/include/boost/tr1/tuple.hpp:58, from test.cc:1: /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/detail/vector_n.hpp: In instantiation of ‘struct boost::fusion::vector_data2<int&, int&>’: /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/detail/vector_n.hpp:103:1: required from ‘struct boost::fusion::vector2<int&, int&>’ /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/vector.hpp:92:42: required from ‘struct boost::fusion::vector<int&, int&, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>’ /usr/local/boost/boost_1_53_beta/include/boost/fusion/tuple/tuple.hpp:44:12: required from ‘struct boost::fusion::tuple<int&, int&>’ test.cc:6:33: required from here /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/detail/vector_n.hpp:57:1: error: ‘boost::fusion::vector_data2<T0, T1>::vector_data2(typename boost::fusion::detail::call_param<Car>::type, typename boost::fusion::detail::call_param<Cdr>::type) [with T0 = int&; T1 = int&; typename boost::fusion::detail::call_param<Car>::type = int&; typename boost::fusion::detail::call_param<Cdr>::type = int&]’ cannot be overloaded /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/detail/vector_n.hpp:53:1: error: with ‘boost::fusion::vector_data2<T0, T1>::vector_data2(T0&&, T1&&) [with T0 = int&; T1 = int&]’ /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/detail/vector_n.hpp: In instantiation of ‘struct boost::fusion::vector2<int&, int&>’: /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/vector.hpp:92:42: required from ‘struct boost::fusion::vector<int&, int&, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>’ /usr/local/boost/boost_1_53_beta/include/boost/fusion/tuple/tuple.hpp:44:12: required from ‘struct boost::fusion::tuple<int&, int&>’ test.cc:6:33: required from here /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/detail/vector_n.hpp:130:1: error: ‘boost::fusion::vector2<T0, T1>::vector2(T0&&, T1&&) [with T0 = int&; T1 = int&]’ cannot be overloaded /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/detail/vector_n.hpp:121:1: error: with ‘boost::fusion::vector2<T0, T1>::vector2(typename boost::fusion::detail::call_param<Car>::type, typename boost::fusion::detail::call_param<Cdr>::type) [with T0 = int&; T1 = int&; typename boost::fusion::detail::call_param<Car>::type = int&; typename boost::fusion::detail::call_param<Cdr>::type = int&]’ In file included from /usr/local/boost/boost_1_53_beta/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:52:0, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp:20, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/vector.hpp:125, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/tuple/tuple.hpp:11, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/tuple.hpp:10, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/include/tuple.hpp:10, from /usr/local/boost/boost_1_53_beta/include/boost/tr1/tuple.hpp:58, from test.cc:1: /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/vector.hpp: In instantiation of ‘struct boost::fusion::vector<int&, int&, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>’: /usr/local/boost/boost_1_53_beta/include/boost/fusion/tuple/tuple.hpp:44:12: required from ‘struct boost::fusion::tuple<int&, int&>’ test.cc:6:33: required from here /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp:44:5: error: ‘boost::fusion::vector<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::vector(T0&&) [with T0 = int&; T1 = int&; T2 = boost::fusion::void_; T3 = boost::fusion::void_; T4 = boost::fusion::void_; T5 = boost::fusion::void_; T6 = boost::fusion::void_; T7 = boost::fusion::void_; T8 = boost::fusion::void_; T9 = boost::fusion::void_]’ cannot be overloaded /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp:36:5: error: with ‘boost::fusion::vector<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::vector(typename boost::fusion::detail::call_param<T0>::type) [with T0 = int&; T1 = int&; T2 = boost::fusion::void_; T3 = boost::fusion::void_; T4 = boost::fusion::void_; T5 = boost::fusion::void_; T6 = boost::fusion::void_; T7 = boost::fusion::void_; T8 = boost::fusion::void_; T9 = boost::fusion::void_; typename boost::fusion::detail::call_param<T0>::type = int&]’ In file included from /usr/local/boost/boost_1_53_beta/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:57:0, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp:20, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/vector.hpp:125, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/tuple/tuple.hpp:11, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/tuple.hpp:10, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/include/tuple.hpp:10, from /usr/local/boost/boost_1_53_beta/include/boost/tr1/tuple.hpp:58, from test.cc:1: /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp:44:5: error: ‘boost::fusion::vector<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::vector(T0&&, T1&&) [with T0 = int&; T1 = int&; T2 = boost::fusion::void_; T3 = boost::fusion::void_; T4 = boost::fusion::void_; T5 = boost::fusion::void_; T6 = boost::fusion::void_; T7 = boost::fusion::void_; T8 = boost::fusion::void_; T9 = boost::fusion::void_]’ cannot be overloaded /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp:36:5: error: with ‘boost::fusion::vector<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::vector(typename boost::fusion::detail::call_param<T0>::type, typename boost::fusion::detail::call_param<T1>::type) [with T0 = int&; T1 = int&; T2 = boost::fusion::void_; T3 = boost::fusion::void_; T4 = boost::fusion::void_; T5 = boost::fusion::void_; T6 = boost::fusion::void_; T7 = boost::fusion::void_; T8 = boost::fusion::void_; T9 = boost::fusion::void_; typename boost::fusion::detail::call_param<T0>::type = int&; typename boost::fusion::detail::call_param<T1>::type = int&]’ The same test case compiles fine without C++11 or without BOOST_FUSION_DONT_USE_PREPROCESSED_FILES and in previous versions of Boost (1.48 / 1.49)

On Jan 21, 2013, at 12:28 PM, Ioannis Papadopoulos <ipapadop@cse.tamu.edu> wrote:
OK, another problem in Boost.Fusion:
#include <boost/tr1/tuple.hpp> #include <boost/tr1/functional.hpp>
int a, b;
std::tr1::tuple<int&, int&> get() { return std::tr1::tuple<int&, int&>(std::tr1::ref(a), std::tr1::ref(b)); }
int main() { std::tr1::tuple<int&, int&> t = get(); return 0; }
cannot compile with GCC 4.7.2 / C++11 when defining BOOST_FUSION_DONT_USE_PREPROCESSED_FILES:
$ g++ --std=c++11 -DBOOST_FUSION_DONT_USE_PREPROCESSED_FILES test.cc -I /usr/local/boost/boost_1_53_beta/include/ [ error message snipped ]
I can reproduce this here as well (with clang): $ clang++ -std=c++11 -stdlib=libc++ -DBOOST_FUSION_DONT_USE_PREPROCESSED_FILES -I /Sources/boost/beta1 junk.cpp In file included from junk.cpp:1: In file included from /Sources/boost/trunk/boost/tr1/tuple.hpp:58: In file included from /Sources/boost/trunk/boost/fusion/include/tuple.hpp:10: In file included from /Sources/boost/trunk/boost/fusion/tuple.hpp:10: In file included from /Sources/boost/trunk/boost/fusion/tuple/tuple.hpp:11: In file included from /Sources/boost/trunk/boost/fusion/container/vector/vector.hpp:10: In file included from /Sources/boost/trunk/boost/fusion/container/vector/vector_fwd.hpp:14: In file included from /Sources/boost/trunk/boost/fusion/container/vector/vector10.hpp:87: In file included from /Sources/boost/trunk/boost/preprocessor/iteration/detail/iter/forward1.hpp:57: /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_n.hpp:57:22: error: constructor cannot be redeclared BOOST_PP_CAT(vector_data, N)( ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:22:47: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:29:34: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ <scratch space>:170:1: note: expanded from macro 'vector_data' vector_data2 ^ /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_n.hpp:104:22: note: in instantiation of template class 'boost::fusion::vector_data2<int &, int &>' requested here : BOOST_PP_CAT(vector_data, N)<BOOST_PP_ENUM_PARAMS(N, T)> ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:22:47: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:29:34: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ <scratch space>:43:1: note: expanded from macro 'vector_data' vector_data2 ^ /Sources/boost/trunk/boost/fusion/container/vector/vector.hpp:92:26: note: in instantiation of template class 'boost::fusion::vector2<int &, int &>' requested here typedef typename vector_n::types types; ^ /Sources/boost/trunk/boost/fusion/tuple/tuple.hpp:44:20: note: in instantiation of template class 'boost::fusion::vector<int &, int &, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>' requested here struct tuple : vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)> ^ junk.cpp:6:29: note: in instantiation of template class 'boost::fusion::tuple<int &, int &, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>' requested here std::tr1::tuple<int&, int&> get() ^ /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_n.hpp:53:22: note: previous declaration is here BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _)) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:22:47: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:29:34: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ <scratch space>:126:1: note: expanded from macro 'vector_data' vector_data2 ^ In file included from junk.cpp:1: In file included from /Sources/boost/trunk/boost/tr1/tuple.hpp:58: In file included from /Sources/boost/trunk/boost/fusion/include/tuple.hpp:10: In file included from /Sources/boost/trunk/boost/fusion/tuple.hpp:10: In file included from /Sources/boost/trunk/boost/fusion/tuple/tuple.hpp:11: In file included from /Sources/boost/trunk/boost/fusion/container/vector/vector.hpp:10: In file included from /Sources/boost/trunk/boost/fusion/container/vector/vector_fwd.hpp:14: In file included from /Sources/boost/trunk/boost/fusion/container/vector/vector10.hpp:87: In file included from /Sources/boost/trunk/boost/preprocessor/iteration/detail/iter/forward1.hpp:57: /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_n.hpp:130:22: error: constructor cannot be redeclared BOOST_PP_CAT(vector, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _)) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:22:47: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:29:34: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ <scratch space>:188:1: note: expanded from macro 'vector' vector2 ^ /Sources/boost/trunk/boost/fusion/container/vector/vector.hpp:92:26: note: in instantiation of template class 'boost::fusion::vector2<int &, int &>' requested here typedef typename vector_n::types types; ^ /Sources/boost/trunk/boost/fusion/tuple/tuple.hpp:44:20: note: in instantiation of template class 'boost::fusion::vector<int &, int &, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>' requested here struct tuple : vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)> ^ junk.cpp:6:29: note: in instantiation of template class 'boost::fusion::tuple<int &, int &, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>' requested here std::tr1::tuple<int&, int&> get() ^ /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_n.hpp:121:22: note: previous declaration is here BOOST_PP_CAT(vector, N)( ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:22:47: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:29:34: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ <scratch space>:147:1: note: expanded from macro 'vector' vector2 ^ In file included from junk.cpp:1: In file included from /Sources/boost/trunk/boost/tr1/tuple.hpp:58: In file included from /Sources/boost/trunk/boost/fusion/include/tuple.hpp:10: In file included from /Sources/boost/trunk/boost/fusion/tuple.hpp:10: In file included from /Sources/boost/trunk/boost/fusion/tuple/tuple.hpp:11: In file included from /Sources/boost/trunk/boost/fusion/container/vector/vector.hpp:125: In file included from /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_forward_ctor.hpp:20: In file included from /Sources/boost/trunk/boost/preprocessor/iteration/detail/iter/forward1.hpp:52: /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_forward_ctor.hpp:44:5: error: constructor cannot be redeclared vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _)) ^ /Sources/boost/trunk/boost/fusion/tuple/tuple.hpp:44:20: note: in instantiation of template class 'boost::fusion::vector<int &, int &, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>' requested here struct tuple : vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)> ^ junk.cpp:6:29: note: in instantiation of template class 'boost::fusion::tuple<int &, int &, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>' requested here std::tr1::tuple<int&, int&> get() ^ /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_forward_ctor.hpp:36:5: note: previous declaration is here vector(BOOST_PP_ENUM_BINARY_PARAMS( ^ In file included from junk.cpp:1: In file included from /Sources/boost/trunk/boost/tr1/tuple.hpp:58: In file included from /Sources/boost/trunk/boost/fusion/include/tuple.hpp:10: In file included from /Sources/boost/trunk/boost/fusion/tuple.hpp:10: In file included from /Sources/boost/trunk/boost/fusion/tuple/tuple.hpp:11: In file included from /Sources/boost/trunk/boost/fusion/container/vector/vector.hpp:125: In file included from /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_forward_ctor.hpp:20: In file included from /Sources/boost/trunk/boost/preprocessor/iteration/detail/iter/forward1.hpp:57: /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_forward_ctor.hpp:44:5: error: constructor cannot be redeclared vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _)) ^ /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_forward_ctor.hpp:36:5: note: previous declaration is here vector(BOOST_PP_ENUM_BINARY_PARAMS( ^ /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_forward_ctor.hpp:45:11: error: no matching constructor for initialization of 'vector_n' (aka 'vector2<int &, int &>') : vec(BOOST_PP_ENUM(N, FUSION_FORWARD_CTOR_MOVE, _)) {} ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Sources/boost/trunk/boost/fusion/tuple/detail/tuple_expand.hpp:35:11: note: in instantiation of member function 'boost::fusion::vector<int &, int &, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>::vector' requested here : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {} ^ junk.cpp:8:9: note: in instantiation of member function 'boost::fusion::tuple<int &, int &, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>::tuple' requested here return std::tr1::tuple<int&, int&>(std::tr1::ref(a), std::tr1::ref(b)); ^ /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_n.hpp:130:22: note: candidate constructor not viable: no known conversion from 'typename remove_reference<int &>::type' (aka 'int') to 'int &&' for 1st argument; BOOST_PP_CAT(vector, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _)) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:22:47: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:29:34: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ <scratch space>:188:1: note: expanded from macro 'vector' vector2 ^ /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_n.hpp:140:22: note: candidate constructor template not viable: requires 1 argument, but 2 were provided BOOST_PP_CAT(vector, N)( ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:22:47: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:29:34: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ <scratch space>:33:1: note: expanded from macro 'vector' vector2 ^ /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_n.hpp:145:22: note: candidate constructor template not viable: requires 1 argument, but 2 were provided BOOST_PP_CAT(vector, N)( ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:22:47: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:29:34: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ <scratch space>:73:1: note: expanded from macro 'vector' vector2 ^ /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_n.hpp:154:22: note: candidate constructor template not viable: requires 1 argument, but 2 were provided BOOST_PP_CAT(vector, N)( ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:22:47: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:29:34: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ <scratch space>:76:1: note: expanded from macro 'vector' vector2 ^ /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_n.hpp:116:22: note: candidate constructor not viable: requires 0 arguments, but 2 were provided BOOST_PP_CAT(vector, N)() {} ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:22:47: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:29:34: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ <scratch space>:144:1: note: expanded from macro 'vector' vector2 ^ /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_n.hpp:135:22: note: candidate constructor not viable: requires 1 argument, but 2 were provided BOOST_PP_CAT(vector, N)(BOOST_PP_CAT(vector, N)&& rhs) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:22:47: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:29:34: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ <scratch space>:11:1: note: expanded from macro 'vector' vector2 ^ /Sources/boost/trunk/boost/fusion/container/vector/detail/vector_n.hpp:103:25: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided struct BOOST_PP_CAT(vector, N) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:22:47: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /Sources/boost/trunk/boost/preprocessor/cat.hpp:29:34: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ <scratch space>:41:1: note: expanded from macro 'vector' vector2 ^ 5 errors generated. -- Marshall Marshall Clow Idio Software <mailto:mclow.lists@gmail.com> A.D. 1517: Martin Luther nails his 95 Theses to the church door and is promptly moderated down to (-1, Flamebait). -- Yu Suzuki

On Jan 21, 2013, at 12:28 PM, Ioannis Papadopoulos <ipapadop@cse.tamu.edu> wrote:
OK, another problem in Boost.Fusion:
#include <boost/tr1/tuple.hpp> #include <boost/tr1/functional.hpp>
int a, b;
std::tr1::tuple<int&, int&> get() { return std::tr1::tuple<int&, int&>(std::tr1::ref(a), std::tr1::ref(b)); }
int main() { std::tr1::tuple<int&, int&> t = get(); return 0; }
cannot compile with GCC 4.7.2 / C++11 when defining BOOST_FUSION_DONT_USE_PREPROCESSED_FILES:
$ g++ --std=c++11 -DBOOST_FUSION_DONT_USE_PREPROCESSED_FILES test.cc -I /usr/local/boost/boost_1_53_beta/include/ In file included from /usr/local/boost/boost_1_53_beta/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:57:0, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/vector10.hpp:87, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/vector_fwd.hpp:14, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/vector.hpp:10, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/tuple/tuple.hpp:11, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/tuple.hpp:10, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/include/tuple.hpp:10, from /usr/local/boost/boost_1_53_beta/include/boost/tr1/tuple.hpp:58, from test.cc:1:
File a bug, please ;-) -- Marshall

On 01/21/2013 05:36 PM, Marshall Clow wrote:
On Jan 21, 2013, at 12:28 PM, Ioannis Papadopoulos <ipapadop@cse.tamu.edu> wrote:
OK, another problem in Boost.Fusion:
#include <boost/tr1/tuple.hpp> #include <boost/tr1/functional.hpp>
int a, b;
std::tr1::tuple<int&, int&> get() { return std::tr1::tuple<int&, int&>(std::tr1::ref(a), std::tr1::ref(b)); }
int main() { std::tr1::tuple<int&, int&> t = get(); return 0; }
cannot compile with GCC 4.7.2 / C++11 when defining BOOST_FUSION_DONT_USE_PREPROCESSED_FILES:
$ g++ --std=c++11 -DBOOST_FUSION_DONT_USE_PREPROCESSED_FILES test.cc -I /usr/local/boost/boost_1_53_beta/include/ In file included from /usr/local/boost/boost_1_53_beta/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:57:0, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/vector10.hpp:87, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/vector_fwd.hpp:14, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/container/vector/vector.hpp:10, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/tuple/tuple.hpp:11, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/tuple.hpp:10, from /usr/local/boost/boost_1_53_beta/include/boost/fusion/include/tuple.hpp:10, from /usr/local/boost/boost_1_53_beta/include/boost/tr1/tuple.hpp:58, from test.cc:1:
File a bug, please ;-)
-- Marshall

On 07/01/2013 1:35 PM, Marshall Clow wrote:
Boost release 1.53.0 beta 1 is now available from SourceForge.
See https://sourceforge.net/projects/boost/files/boost/1.53.0.beta.1/
This release contains numerous enhancements and bug fixes for existing libraries.
For details of what's in the release, see http://www.boost.org/users/history/version_1_53_0.html.
Please download the beta, give it a try, and report any problems you encounter.
Thank you,
-- The Boost Release Team Beman Dawes, Eric Niebler, Rene Rivera, Daniel James, Vladimir Prus and Marshall Clow. _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users There are a couple of warnings that have been bugging me that have been around for ages. Patches are already included in Trac. Any chance the fixes could be squeezed into 1.53.0?
https://svn.boost.org/trac/boost/ticket/5598: boost/property_tree/detail/json_parser_write.hpp:35: warning: comparison is always true due to limited range of data type https://svn.boost.org/trac/boost/ticket/6582: Remove unused parameter warning in property tree json parser Also, another one is one that was introduced in 1.52.0. https://svn.boost.org/trac/boost/ticket/7803: [program_options] boost/program_options/errors.hpp:253: warning: unused parameter 'option_name' Sincerely, Shane Turner -- Shane Turner Senior Software Developer phone +1 (902) 406--8375 x1008 email Shane.Turner@NewPace.ca <mailto:Shane.Turner@newpace.ca> aim <aim:GoIm?screenname=Shane.Turner@newpace.ca>/msn <msnim:chat?contact=Shane.Turner@newpace.ca> Shane.Turner@NewPace.ca <aim:GoIm?screenname=Shane.Turner@newpace.ca> skype saturnjct <skype:saturnjct>
participants (3)
-
Ioannis Papadopoulos
-
Marshall Clow
-
Shane Turner