* @endcode
**/
template <class F, class Tuple>
-constexpr auto apply(F&& f, Tuple&& t) -> decltype(
- simgrid::xbt::bits::apply(std::forward<F>(f), std::forward<Tuple>(t),
- std::make_index_sequence<std::tuple_size<typename std::decay_t<Tuple>>::value>()))
+constexpr auto apply(F&& f, Tuple&& t)
+ -> decltype(simgrid::xbt::bits::apply(std::forward<F>(f), std::forward<Tuple>(t),
+ std::make_index_sequence<std::tuple_size_v<typename std::decay_t<Tuple>>>()))
{
return simgrid::xbt::bits::apply(std::forward<F>(f), std::forward<Tuple>(t),
- std::make_index_sequence<std::tuple_size<typename std::decay_t<Tuple>>::value>());
+ std::make_index_sequence<std::tuple_size_v<typename std::decay_t<Tuple>>>());
}
template<class T> class Task;
return code(std::forward<Args>(args)...);
},
// Destroy:
- std::is_trivially_destructible<F>::value ?
+ std::is_trivially_destructible_v<F> ?
static_cast<destroy_function>(nullptr) :
[](TaskUnion& buffer) {
auto* code = reinterpret_cast<F*>(&buffer);