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 at the July, 2022 meeting.]
Subclause 13.10.2 [temp.arg.explicit] paragraph 4 specifies:
Trailing template arguments that can be deduced (13.10.3 [temp.deduct]) or obtained from default template-arguments may be omitted from the list of explicit template-arguments.
[Note 1: A trailing template parameter pack (13.7.4 [temp.variadic]) not otherwise deduced will be deduced as an empty sequence of template arguments. —end note]
If all of the template arguments can be deduced, they may all be omitted; in this case, the empty template argument list <> itself may also be omitted.
The wording does not allow omitting the empty template argument list <> if all of the template arguments have been obtained from default template-arguments. For example:
template<typename T = int> int f(); int x = f(); // ill-formed per the wording int (*y)() = f; // ditto
Proposed resolution (approved by CWG 2022-07-15):
Change in 13.10.2 [temp.arg.explicit] paragraph 4 as follows:
... If all of the template arguments can be deduced or obtained from default template-arguments, they may all be omitted; in this case, the empty template argument list <> itself may also be omitted.