if constexpr (std::is_same_v<T, real_t>)
foo(new_shared<Param_pge_real>());
else
foo(new_shared<Param_pge_int>());
}
template <typename T>
void foo(shared_ptr<T> param) {
param->description = desc;
param->title = title;
param->value = val;
param->speed_step = speedstep;
g_pge_params.push_back(std::move(param));
}