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: | 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, void
s are properly ignored. In the (heavy TMP) variadic context, they aren't.
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 .