Boost C++ Libraries: Ticket #10032: void container parameters not ignored with BOOST_INTRUSIVE_VARIADIC_TEMPLATES https://svn.boost.org/trac10/ticket/10032 <p> When <code>BOOST_INTRUSIVE_VARIADIC_TEMPLATES</code> is used, <code>void</code> template parameters used to construct intrusive containers are not properly ignored, and instead cause compilation failure. E.g., <code>list&lt; A, void &gt; l</code> does not compile, but it compiles ok when that symbol is not defined. </p> <p> As one consequence, the library test suite cannot be compiled with that symbol defined, because tree-based containers in the test suite are built with <code>void</code> parameters. </p> <p> Technically, the issue rests with the <code>do_pack</code> struct in <code>pack_options.hpp</code>. In non-variadic context, <code>void</code>s are properly ignored. In the (heavy TMP) variadic context, they aren't. </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/10032 Trac 1.4.3 Ion Gaztañaga Fri, 13 Jun 2014 11:01:44 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/10032#comment:1 https://svn.boost.org/trac10/ticket/10032#comment:1 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">invalid</span> </li> </ul> <p> Using void parameters is not allowed, as the user must pass only allowed options. The documented interface is a variadic options interface. In C++03 compilers it's implemented with default template arguments to avoid but it's an implementation detail . </p> Ticket