This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 115e. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2024-11-11
[Accepted as a DR at the November, 2023 meeting.]
Consider:
// header "S.h" template<class T> struct S { S(const T*); }; template<class T> S(T*) -> S<T> // translation unit module; #include "S.h" export module M; export using ::S;
Obviously, the using-declaration referring to the class template S is exported by M, but what about the deduction guide of S?
Proposed resolution (approved by CWG 2023-08-25) [SUPERSEDED]:
Add a new bullet after 10.4 [module.global.frag] bullet 3.5.7 as follows:
- ...
- there exists a declaration M that is not a namespace-definition for which M is decl-reachable from S and either
- ...
- one of M and D declares a template and the other declares a partial or explicit specialization or an implicit or explicit instantiation of that template, or
- one of M and D declares a class template and the other declares a deduction guide for that template, or
Proposed resolution (approved by CWG 2023-10-06):
Add a new bullet after 10.4 [module.global.frag] bullet 3.5.7 as follows:
- ...
- there exists a declaration M that is not a namespace-definition for which M is decl-reachable from S and either
- ...
- one of M and D declares a template and the other declares a partial or explicit specialization or an implicit or explicit instantiation of that template, or
- M declares a class template and D is a deduction guide for that template, or