Eric Friedman wrote:
> I am a bit uneasy about any proposal making adding MPL sequence semantics
> to an otherwise-typical value type. If such proposals are implemented, I
> see a significant ambiguity problem arising in generic code: given a type
> T that is an MPL sequence, should we treat it as a sequence or as a value
> type?
> 
> In particular, if we were to implement boost::tuple as an MPL sequence,
> the following code would seem to me quite unclear insofar as its intended
> behavior:
> 
>    typedef mpl::list<int, std::string> some_types;
>    typedef boost::tuple<int, std::string> some_tuple;
> 
>    typedef boost::variant<some_types> v1; // ok, unambiguous
>    typedef boost::variant<some_tuple> v2; // ambiguity!?
> 
> It seems clear that objects of type v1 should behave equivalently to
> boost::variant<int, std::string>. However, if boost::tuple were an MPL
> sequence, it seems less clear whether objects of type v2 should behave
> likewise or instead as a variant holding a 2-tuple.
> 
> Thus, this question is of particular importance for boost::variant. But
> also, I imagine, it is important for any other type implementing a
> pseudo-variadic template interface as I intend for the final release of
> variant (which is coming, by the way).
> 
> Input?

I agree.

-- 
Alexander Nasonov
Remove minus and all between minus and at from my e-mail for timely response

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to