mclow.lists added inline comments. ================ Comment at: include/string:1211 @@ +1210,3 @@ +// noexcept(declval<_Iter>().operator++()) && +// noexcept(++(declval<_Iter>())) && + noexcept(declval<_Iter>() == declval<_Iter>()) && ---------------- This is not quite right yet. I need to check for assignment, and the two commented out lines attempt to check for increment.
However, the first one fails when the iterator type is a pointer, and the second just fails. ================ Comment at: include/string:1556 @@ -1537,3 +1555,3 @@ < - __is_input_iterator <_InputIterator>::value && - !__is_forward_iterator<_InputIterator>::value, + __is_exactly_input_iterator<_InputIterator>::value + || !__libcpp_string_gets_noexcept_iterator<_InputIterator>::value, ---------------- Drive-by improvement. I got tired of all the `__is_input_iterator <_InputIterator>::value && !__is_forward_iterator<_InputIterator>::value`, so I added `__is_exactly_input_iterator` ================ Comment at: include/string:2522 @@ -2502,4 +2521,3 @@ { - clear(); - for (; __first != __last; ++__first) - push_back(*__first); + call_input(); + basic_string temp(__first, __last); ---------------- This is just test scaffolding so that I can be sure that the correct overload is getting called. Will be removed before checkin. ================ Comment at: include/string:2538 @@ -2517,2 +2537,3 @@ { + call_forward(); size_type __n = static_cast<size_type>(_VSTD::distance(__first, __last)); ---------------- Same as #2522 http://reviews.llvm.org/D15862 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits