On Saturday 23 August 2014 09:40:34 John Maddock wrote:
Furthermore, the bug that produces a message like this:
"sorry, unimplemented: cannot expand 'Args ...' into a fixed-length argument list"
was only fixed in g++ 4.7.0 (according to a bug report). That issue could also use a guard macro, as was done in one of the boost libraries ( BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST).
If this is a GCC specific bug, then I'm inclined to suggest that this is what BOOST_WORKAROUND is for: unless there are a lot of libraries needing this, or there's a consensus that variadic templates should be disabled altogether prior to 4.7?
I have a similar macro BOOST_LOG_NO_CXX11_ARG_PACKS_TO_NON_VARIADIC_ARGS_EXPANSION in Boost.Log. To my knowledge, this is a gcc-specific issue. I don't think that variadic templates should be disabled for gcc prior to 4.7, even with this problem, since the implementation is sufficient for many use cases.