
AMDG On 07/30/2012 11:06 AM, Larry Evans wrote:
http://steven_watanabe.users.sourceforge.net/type_erasure/libs/type_erasure/...
Specifies that the T... are placeholders; however, it doesn't specify that they be unique; hence,
tuple<concept,_a,_a> x(int(0),std::vector<int>(0));
would satisfy the current description but wouldn't be right. Of course no one would intentionally do that; however, if the Tags are calculated in some meta-program, it might happened accidentally. Hence the requires class should also say, "If T... are not unique, no diagnostic occurs", or something similar.
The reason I think "no diagnostic occurs" is that I've looked briefly in tuple.hpp, at the:
::boost::type_erasure::cons<Concept, T...> impl;
in the class tuple definition and the cons definition, and I don't see any check for duplicates.
The placeholders don't have to be unique, but if a placeholder is used more than once, the corresponding constructor arguments all need to be the same type. This is another instance of the same bug that you reported earlier (with the any constructor.). A fix to that, will automatically fix this as well. In Christ, Steven Watanabe