Überprüfen Sie NOExceptness beim Anwenden der Funktion auf ein Paket
Posted: 02 Mar 2025, 15:12
Ich habe die folgende C ++ 26-Funktion, die einen Code für jedes Feld einer Struktur ausführt: < /p>
Aber das ist natürlich nicht möglich.>
Code: Select all
template
constexpr auto for_each_field(S&& s, F&& f)
{
auto&& [... elts] = static_cast(s);
((static_cast(f)(std::forward_like(elts))), ...);
}
< /code>
Ich möchte noexcept bedingt aktivieren, basierend darauf, ob f selbst eine Ausnahme auswerfen kann. Der "theoretische" Code müsste irgendwie wie < /p>
aussehentemplate
constexpr auto for_each_field(S&& s, F&& f) noexcept(noexcept(
auto&& [... elts] = static_cast(s);
((static_cast(f)(std::forward_like(elts))), ...);
))
{
auto&& [... elts] = static_cast(s);
((static_cast(f)(std::forward_like(elts))), ...);
}