Короткий ответ: Нет.
Длинный ответ: Да, вы можете использовать некоторую косвенность через шаблон класса:
template<typename T>
constexpr auto zero = T{0};
template<typename T>
struct zero_global {
static constexpr auto value = zero<T>;
};
template<typename T, template<typename> class VariableTemplate>
constexpr auto add_one()
{
return VariableTemplate<T>::value + T{1};
}
int main()
{
return add_one<int, zero_global>();
}
Живой пример