[PATCH] D108696: [Coroutines] [Frontend] Lookup in std namespace first

Arthur O'Dwyer via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 29 08:36:28 PDT 2021


Quuxplusone added a comment.

In D108696#3095789 <https://reviews.llvm.org/D108696#3095789>, @ChuanqiXu wrote:

> Since there are other `experimental/*` headers moved in to normal include paths, I guess there may be similar problems before. I think this problem is not limited in coroutine. So how does libc++ do before for this situation @Quuxplusone ?

I'm not aware of any similar situations involving `<experimental/*>`. Most stuff in `<experimental/*>` is just library stuff, like `std::experimental::pmr`, where the two versions can happily coexist because we have namespaces. Coroutines are special (and really annoying) because they're a core-language feature with a "magic" relationship to a specific library header. (Core-language syntax doesn't respect namespaces.) The only other "magic" features like that are

- `typeid` looks for `std::type_info`
- `{}` looks for `std::initializer_list`
- `auto [a,b]` looks for `std::tuple_size` etc.
- `<=>` looks for `std::strong_ordering` etc.

None of these were ever prototyped in `<experimental/*>` before being put into the Standard, so they never ran into this problem.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108696/new/

https://reviews.llvm.org/D108696



More information about the cfe-commits mailing list