O exemplo sem sentido a seguir não é compilado, mas existe outra maneira de passar um modelo de variável como argumento de modelo?
template<typename T>
constexpr auto zero = T{0};
template<typename T, template<typename> auto VariableTemplate>
constexpr auto add_one()
{
return VariableTemplate<T> + T{1};
}
int main()
{
return add_one<int, zero>();
}
value<T>
isso significaria? Uma referência à variável global? Além disso, você não pode usar o ODR como parâmetro de modelo que não seja do tipo, mas pode usar um modelo global.