The goal here is to exercise each rule in [basic.lookup.argdep] at least once. These new tests expose what I believe are 2 issues:
- CWG 1691 needs to be implemented (p2: [...] Its associated namespaces are the innermost enclosing namespaces of its associated classes [...]) The corresponding tests are adl_class_type::X2 and adl_class_type::X5.
- The end of paragraph 2 ([...] Additionally, if the aforementioned set of overloaded functions is named with a template-id, its associated classes and namespaces also include those of its type template-arguments and its template template-arguments.) is not implemented. Closely related, the restriction on non-dependent parameter types in this same paragraph needs to be removed. The corresponding tests are in adl_overload_set. (both issues are from CWG 997).
Do you also have a test somewhere to verify that the parameter and return types of a lambda's operator() do not contribute to the associated types of the lambda type itself? That is,
Clang does handle this correctly; I'm just asking for it to be tested, if it's not already. (I might have overlooked an existing test.)