Avatar von pre alpha
  • pre alpha

994 Beiträge seit 13.05.2006

Re: Implementierungen unvollständig

pre alpha schrieb am 21.09.2020 14:55:

Hallo Rainer,
leider fehlen noch etliche Implementierungen:
1) Algorithm mit ExecutionPolicy sind nicht constexpr

Der Punkt lässt sich einfach beantworten.

If execution of a function invoked as part of the algorithm throws an exception and ExecutionPolicy is one of the standard policies, std::terminate is called.

Sobald eine Exception geworfen werden kann, kann ein Algorithmus nicht constexpr sein.

Verstehe. Was spräche denn dagegen, die ExecutionPolicy zu ignorieren wenn ein Algorithmus constexpr aufgerufen wird? Etwa so:

template<typename ExecutionPolicy, Args> constexpr auto algo(ExecutionPolicy&& policy, Args) noexcept(std::is_constant_evaluated()) { if (std::is_constant_evaluated()) return algo_constexpr(Args); else return algo_ep(policy, Args); }

Dann hätte man ein einheitliches Interface und wenn ein Algorithmus zur CT ausgeführt wird ist es doch sowieso egal wie er das tut.

Grüße
pre alpha

Bewerten
- +