http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57139



--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> 2013-05-01 
21:52:19 UTC ---

That's what the Requires: clause says, but see also:



  Remark: This constructor shall not participate in overload resolution unless

  const Ui& is implicitly convertible to Ti for all i.



is_constructible does not enforce implicit convertibility, we need an

additional check, which is why we use is_convertible.  The SFINAE constraint is

there to implement the Remark, not the Requires clause (which is the user's

responsibility to meet not the implementation's.)



Also note that it only requires move constructibility, not necessarily copy

constructibility.



I thought the code was wrong too and changed those constraints with

http://gcc.gnu.org/ml/libstdc++/2011-05/msg00126.html and then reverted it with

http://gcc.gnu.org/ml/libstdc++/2011-05/msg00129.html



I think there will be a paper in the next WG21 mailing addressing this topic.

Reply via email to