I do not see any progress in the never-ending never-empty vs everything discussion. It looks like an argument about tastes, and I see no room for compromise here. Number of examples for any point of view is also close to zero. Instead of saying that you would like more one or another, just implement it, and let the user decide which one to use. Or, at least, make a poll that will show needs in promoted by you implementation instead of forecasting from your big, but personal experience. A policy-based design is good in theory, but what in practice? In practice, you want one person to make and maintain bunch of different variants, which you, most likely, will never use, but users, most likely, will have nightmares in using it, especially in API, due to signature verbosity. More code will hurt preprocess and compile times for sure. What surprises me a lot that there was not much attention to the fact that because of number 2 in the name users will come and will ask about it. Do I need an upgrade? Is `variant` deprecated? Is `variant2` an improved version of `variant`?