/usr/include/boost/histogram/detail
Edit: /usr/include/boost/histogram/detail/static_if.hpp (1477B)
// Copyright 2018-2019 Hans Dembinski
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_HISTOGRAM_DETAIL_STATIC_IF_HPP
#define BOOST_HISTOGRAM_DETAIL_STATIC_IF_HPP
#include
#include
namespace boost {
namespace histogram {
namespace detail {
template
constexpr decltype(auto) static_if_impl(
std::true_type, T&& t, F&&,
Args&&... args) noexcept(noexcept(std::declval()(std::declval()...))) {
return std::forward(t)(std::forward(args)...);
}
template
constexpr decltype(auto) static_if_impl(
std::false_type, T&&, F&& f,
Args&&... args) noexcept(noexcept(std::declval()(std::declval()...))) {
return std::forward(f)(std::forward(args)...);
}
template
constexpr decltype(auto) static_if_c(Ts&&... ts) noexcept(
noexcept(static_if_impl(std::integral_constant{}, std::declval()...))) {
return static_if_impl(std::integral_constant{}, std::forward(ts)...);
}
template
constexpr decltype(auto) static_if(Ts&&... ts) noexcept(
noexcept(static_if_impl(Bool{}, std::declval()...))) {
return static_if_impl(Bool{}, std::forward(ts)...);
}
} // namespace detail
} // namespace histogram
} // namespace boost
#endif