CWG Issue 2433 (original) (raw)
This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 117a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2025-04-13
2433. Variable templates in the ODR
Section: 6.3 [basic.def.odr]Status: C++20Submitter: Richard SmithDate: 2019-10-10
[Adopted as a DR at the November, 2019 meeting.]
The list of entities in 6.3 [basic.def.odr] paragraph 12 that can have multiple definitions across translation units does not, but should, include variable templates.
Proposed resolution (October, 2019):
There can be more than one definition of a
- class type (Clause 11 [class]),
- enumeration type (9.8.1 [dcl.enum]),
- inline function or variable
with external linkage(9.2.8 [dcl.inline]),inline variable with external linkage (9.2.8 [dcl.inline]),class template (Clause 13 [temp]),non-static function template (13.7.7 [temp.fct]),concept (13.7.9 [temp.concept]),static data member of a class template (13.7.2.5 [temp.static]),member function of a class template (13.7.2.2 [temp.mem.func]),template specialization for which some template parameters are not specified (13.9 [temp.spec], 13.7.6 [temp.spec.partial]),- templated entity (13.1 [temp.pre]),
- default argument for a parameter (for a function in a given scope), or
- default template argument
in a program provided that...
[Drafting note: “with external linkage” is not needed for the inline entities because the other cases - entities attached to a named module and multiple definitions in the same translation unit - are ruled out later in that paragraph.]