It seems that double was not yet supported, but it is possible to use long or long long:
template<long Value>
constexpr long getFactorial( )
{
return Value * getFactorial<Value - 1>( );
}
template<>
constexpr long getFactorial<0>( ) { return 1; }
To use double, consider C++20 and Visual Studio 2022 (https://en.cppreference.com/w/cpp/language/template_parameters).