On Mon, Apr 3, 2017 at 1:09 PM, Peter Dimov via Boost
Tim Song wrote:
However, in C++14, variable templates have external linkage, so >> `inline` is not necessary for variable templates.
Indeed. They're templates after all.
As I understand it, this depends on Core issue 1713, whose unresolved status presumably led LWG to go with putting inline on everything at Kona (see P0607R0; LWG moved A and B2).
It makes no sense for variable templates to "not be inline", because that would make them useless. Templates are defined in headers. They have to be "inline" in the same way template functions have to be "inline" even when they aren't.
The issue was, I believe, whether the const implied by the constexpr gave the variable template internal linkage; even though they are templates, that doesn't help with the ODR problem if they are actually different templates.