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, voids 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 .