https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96445
--- Comment #2 from tyu at eridex dot org ---
The extern template and constant are what would appear in the header file for
class C. The explicit instantiation would appear in the source file:
// -- C.h ------------
template <typename T>
class C {
private:
constexpr C(T){};
public:
constexpr static C<T> make(T t) { return C<T>(t); }
};
extern template class C<int>;
inline constexpr C<int> constant = C<int>::make(0);
// -- C.cpp ----------
template class C<int>;
// -- main.cpp -------
int main() { return 0; }
// -------------------