Ansicht umschalten
Avatar von Urfahraner Auge
  • Urfahraner Auge

mehr als 1000 Beiträge seit 26.04.2004

Re: Manchmal fragt man sich ja, wie das in C geht ...

pre alpha schrieb am 25.11.2021 11:20:

Nachtrag. Eigentlich ist es nicht sinnvoll die Argumente nur auf int zu begrenzen. Was aber sinnvoll ist, ist die Argumente auf den gleichen Typ zu begrenzen und diesen auch als Ergebniss zu liefern:

template <typename... Args> constexpr auto addingSame(const Args&... args) noexcept { static_assert(sizeof...(Args) > 0); using tuple_type = decltype(std::make_tuple(args...)); using front_type = std::tuple_element_t<0, tuple_type>; static_assert((std::is_same_v<Args, front_type> && ...)); return front_type((args + ...)); } int main() { auto a = addingSame(1, 2); // ok auto b = addingSame(3.1415, 2.7182); // ok auto c = addingSame(3, 3.1415); // CT-Error }

Wenn das häufig vorkommt, dann solltest du einen type trait

pre_alpha::is_same_v<Args ...>

mit naheliegender Semantik einführen ;-)

Bewerten
- +
Ansicht umschalten