zygoloid wrote: In @sdkrystian's example, does the use of `A<1>::B<T>` within `A<0>::B` cause an implicit instantiation to take place? I would have expected that no implicit instantiation takes place at that point because `A<1>::B<T>` is a dependent type. I would expect that the specialization of `A<1>::B` would need to be visible from the point of instantiation of `A<1>::B<int>`, which it is, so that example looks to me like it should be valid. The wording seems a bit unclear though, so maybe it's worth checking with CWG.
My understanding is that the point of [temp.expl.spec]/7 is that an explicit specialization needs to be declared before the point where we'd otherwise consider implicitly instantiating a specialization from the primary template or a partial specialization, and in this example it seems to me that it is. https://github.com/llvm/llvm-project/pull/106585 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits