1// Copyright (c) 2022 Klemens D. Morgenstern
2//
3// Distributed under the Boost Software License, Version 1.0. (See accompanying
4// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6#include <boost/cobalt/detail/util.hpp>
7
8static_assert(boost::cobalt::detail::variadic_first<int, double, int>() == 1u);
9static_assert(boost::cobalt::detail::variadic_first<const int &, int, double>() == std::numeric_limits<std::size_t>::max());
10static_assert(boost::cobalt::detail::variadic_first<int, double>() == std::numeric_limits<std::size_t>::max());
11
12static_assert(boost::cobalt::detail::get_variadic<0>(first: 4.2, args: 3) == 4.2);
13static_assert(boost::cobalt::detail::get_variadic<1>(first: 4.2, args: 3) == 3);
14static_assert(boost::cobalt::detail::get_variadic<0>(first: 4, args: 2.) == 4u);
15static_assert(boost::cobalt::detail::get_variadic<1>(first: 4, args: 2.3) == 2.3);
16
17static_assert(boost::cobalt::detail::variadic_has<int, double, int>);
18static_assert(boost::cobalt::detail::variadic_has<int, int, double>);
19static_assert(!boost::cobalt::detail::variadic_has<int, double>);
20
21static_assert(std::is_same_v<boost::cobalt::detail::variadic_element_t<0u, double, int>, double>);
22static_assert(std::is_same_v<boost::cobalt::detail::variadic_element_t<1u, int, int, double>, int>);
23static_assert(std::is_same_v<boost::cobalt::detail::variadic_element_t<1u, int, double>, double>);
24

source code of boost/libs/cobalt/test/util.cpp