dlj requested changes to this revision.
dlj added a comment.
This revision now requires changes to proceed.

Hmm, looking more at this change... while it does make the behaviour consistent 
for Forward and Input iterators, I think it's just making them both do the 
wrong thing.

Specifically, based on this:

"... i and j denote iterators satisfying input iterator requirements and refer 
to elements implicitly convertible to value_­type..."

https://timsong-cpp.github.io/cppwp/n4659/container.requirements#sequence.reqmts-3

So, for example, in test_emplacable_concept, the vector constructor should be 
diagnosed, because there is no way to *implicitly* convert from the 
dereferenced iterator type to the inserted type. The selected constructor is 
explicit. Using emplacement just omits a *second* potentially-expensive 
conversion: the explicit constructor behaviour (invoked through forwarding) may 
still be undesired.


https://reviews.llvm.org/D38757



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to