El siguiente ejemplo sin sentido no se compila, pero ¿hay alguna otra forma de pasar una plantilla variable como argumento de plantilla?
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>
significaría? ¿Una referencia a la variable global? Además, no puede ODR usar parámetros de plantilla que no sean de tipo, pero puede hacerlo con una plantilla global.