"Template template arguments" contributing to ADL? #2820
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Discussed on Slack with @K-ballo and we decided we have no idea what the parenthesized wording here is supposed to mean; therefore I wildly propose that we just strike it. @zygoloid, please help prove me wrong!
Furthermore, I claim with stronger confidence that the phrase "the templates used as template template arguments" is redundant, given the following phrases "the namespaces of which any template template arguments are members; and the classes of which any member templates used as template template arguments are members." I don't think it is meaningful for a template itself to be an associated entity.
K-ballo did find this completely crazy example which is supported by GCC (but not Clang, ICC, or MSVC):
Here, the type of
A::otherfun<B::T>
is unknown (because it's an overload set); but GCC believes thatB
is an associated namespace (andA
is not an associated namespace), presumably somewhat on the basis of the extremely confusing wording touched by this PR.