swift
d6adf296 - [cxx-interop] Detect explicit iterator_traits<Iter> specializations

Commit
12 hours ago
[cxx-interop] Detect explicit iterator_traits<Iter> specializations C++ supports two mechanisms for declaring that some user-defined type struct Iter is some kind of iterator: (1) it has a member Iter::iterator_category/_concept that is a typedef of (a subtype of) std::some_iterator_tag (2) it has an explicit specialization of std::iterator_traits<Iter> that contains a typedef of (a subtype of) std::some_iterator_tag We previously did not detect the latter case for C++ interop. This patch adds detection for the latter case, so that a (valid) explicit specialization of std::iterator_traits<Iter> will produce a protocol conformance to Cxx*Iterator when Iter is imported.
Author
Committer
Parents
Loading