# Fixes some compilation errors when compiling OpenAL Soft using GCC 7, # which is currently used by the Miyoo and PlayStation 3 builds. --- a/alc/effects/reverb.cpp +++ b/alc/effects/reverb.cpp @@ -931,7 +931,7 @@ void EarlyReflections::updateLines(const float density_mult, const float diffusi /* Calculate the gain (coefficient) for the secondary reflections based on * the average delay and decay time. */ - const auto length = std::reduce(EARLY_LINE_LENGTHS.begin(), EARLY_LINE_LENGTHS.end(), 0.0f) + const auto length = std::accumulate(EARLY_LINE_LENGTHS.begin(), EARLY_LINE_LENGTHS.end(), 0.0f) / float{EARLY_LINE_LENGTHS.size()} * density_mult; Coeff = CalcDecayCoeff(length, decayTime); --- a/common/albit.h +++ b/common/albit.h @@ -30,7 +30,7 @@ template std::enable_if_t, T> byteswap(T value) noexcept { - static_assert(std::has_unique_object_representations_v); + static_assert(std::has_unique_object_representations::value); auto bytes = al::bit_cast>(value); std::reverse(bytes.begin(), bytes.end()); return al::bit_cast(bytes); --- a/fmt-11.1.1/include/fmt/base.h +++ b/fmt-11.1.1/include/fmt/base.h @@ -1117,7 +1117,7 @@ using use_formatter = template > auto has_formatter_impl(T* p, buffered_context* ctx = nullptr) - -> decltype(formatter().format(*p, *ctx), std::true_type()); + -> decltype(formatter().format(*p, std::declval>()), std::true_type()); template auto has_formatter_impl(...) -> std::false_type; // T can be const-qualified to check if it is const-formattable. @@ -2224,7 +2224,7 @@ template class value { FMT_CONSTEXPR value(const T&, custom_tag) { // Cannot format an argument; to make type T formattable provide a // formatter specialization: https://fmt.dev/latest/api.html#udt. - type_is_unformattable_for _; + } // Formats an argument of a custom type, such as a user-defined class.