Не уверен, что это соответствует стандартам, потому что еще нет окончательного стандарта C ++ 20, и я не знаю, что об этом могут говорить существующие стандарты.
clang 9 в Compiler Explorer не 't компилируется, но GCC 9 с -std = c ++ 2a делает.
Чего я хотел бы добиться, так это иметь функцию, шаблонизированную с лямбдой без сохранения состояния из общего заголовка, чтобы она была внешне видимой, как функция, установленная сцелочисленное значение.
static constexpr auto commonlambdainheader=[]{};
template<auto L> struct TS {};
using Sl = TS<commonlambdainheader>;
using Si = TS<3>;
template<class C> extern int func(int i);
template<class C> int func(int i) {return i;}
// not external, but visible with a mangled name at -O0
template<> int func<Sl>(int i);
template<> int func<Sl>(int i){ return 3; }
// externally visible and name demangled
template<> int func<Si>(int i);
template<> int func<Si>(int i){ return 4; }