Opened 8 years ago

Closed 8 years ago

#10032 closed Feature Requests (invalid)

void container parameters not ignored with BOOST_INTRUSIVE_VARIADIC_TEMPLATES

Reported by: Matei David <matei@…> Owned by: Ion Gaztañaga
Milestone: To Be Determined Component: intrusive
Version: Boost 1.55.0 Severity: Cosmetic
Keywords: variadic template parameters Cc:

Description

When BOOST_INTRUSIVE_VARIADIC_TEMPLATES is used, void template parameters used to construct intrusive containers are not properly ignored, and instead cause compilation failure. E.g., list< A, void > l does not compile, but it compiles ok when that symbol is not defined.

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 void parameters.

Technically, the issue rests with the do_pack struct in pack_options.hpp. In non-variadic context, voids are properly ignored. In the (heavy TMP) variadic context, they aren't.

Change History (1)

comment:1 by Ion Gaztañaga, 8 years ago

Resolution: invalid
Status: newclosed

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 .

Note: See TracTickets for help on using tickets.