Boost C++ Libraries: Ticket #7763: Boost.Parameter functions no longer accept non-moveable types as arguments https://svn.boost.org/trac10/ticket/7763 <p> Boost.Parameter suffered a regression because of a change to the semantics of boost::is_convertible. It used to be possible to pass a non-movable type to a Boost.Parameter function, but that no longer works as of Boost 1.47 (at least on certain compilers; gcc continued to work for some more Boost versions but doesn't in 1.52). </p> <p> The issue with is_convertible was discussed in more detail in this thread: <a class="ext-link" href="http://boost.2283326.n4.nabble.com/type-traits-parameter-Inconsistent-boost-is-convertible-between-gcc-and-clang-td4634162.html"><span class="icon">​</span>http://boost.2283326.n4.nabble.com/type-traits-parameter-Inconsistent-boost-is-convertible-between-gcc-and-clang-td4634162.html</a> </p> <p> It first manifested in clang, but now also appears in gcc thanks to the bugfix discussed that thread. </p> <p> I attach an example demonstrating the problem. </p> <p> I have worked around the problem locally by editing boost/parameter/preprocessor.hpp and changing </p> <blockquote> <p> typedef is_convertible&lt;mpl::_, Target&gt; type; </p> </blockquote> <p> to </p> <blockquote> <p> typedef is_convertible&lt;mpl::_, const Target&amp;&gt; type; </p> </blockquote> <p> I make no claim that this is exactly the correct fix, but I believe something along these lines is required. </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/7763 Trac 1.4.3 John Bytheway <jbytheway+boost@…> Tue, 04 Dec 2012 04:01:17 GMT attachment set https://svn.boost.org/trac10/ticket/7763 https://svn.boost.org/trac10/ticket/7763 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">boost_parameter_issue.cpp</span> </li> </ul> <p> Example C++ source demonstrating the issue </p> Ticket