17#ifndef LLVM_ADT_STLFORWARDCOMPAT_H
18#define LLVM_ADT_STLFORWARDCOMPAT_H
32template <
typename T,
typename = std::enable_if_t<std::is_
floating_po
int_v<T>>>
33inline constexpr T e_v =
T(0x1.5bf0a8b145769P+1);
34template <
typename T,
typename = std::enable_if_t<std::is_
floating_po
int_v<T>>>
36template <
typename T,
typename = std::enable_if_t<std::is_
floating_po
int_v<T>>>
37inline constexpr T ln2_v =
T(0x1.62e42fefa39efP-1);
38template <
typename T,
typename = std::enable_if_t<std::is_
floating_po
int_v<T>>>
39inline constexpr T ln10_v =
T(0x1.26bb1bbb55516P+1);
40template <
typename T,
typename = std::enable_if_t<std::is_
floating_po
int_v<T>>>
41inline constexpr T log2e_v =
T(0x1.71547652b82feP+0);
42template <
typename T,
typename = std::enable_if_t<std::is_
floating_po
int_v<T>>>
44template <
typename T,
typename = std::enable_if_t<std::is_
floating_po
int_v<T>>>
45inline constexpr T pi_v =
T(0x1.921fb54442d18P+1);
46template <
typename T,
typename = std::enable_if_t<std::is_
floating_po
int_v<T>>>
48template <
typename T,
typename = std::enable_if_t<std::is_
floating_po
int_v<T>>>
50template <
typename T,
typename = std::enable_if_t<std::is_
floating_po
int_v<T>>>
51inline constexpr T sqrt2_v =
T(0x1.6a09e667f3bcdP+0);
52template <
typename T,
typename = std::enable_if_t<std::is_
floating_po
int_v<T>>>
54template <
typename T,
typename = std::enable_if_t<std::is_
floating_po
int_v<T>>>
55inline constexpr T sqrt3_v =
T(0x1.bb67ae8584caaP+0);
56template <
typename T,
typename = std::enable_if_t<std::is_
floating_po
int_v<T>>>
58template <
typename T,
typename = std::enable_if_t<std::is_
floating_po
int_v<T>>>
59inline constexpr T phi_v =
T(0x1.9e3779b97f4a8P+0);
81 using type = std::remove_cv_t<std::remove_reference_t<T>>;
102template <
class,
template <
class...>
class Op,
class... Args>
struct detector {
105template <
template <
class...>
class Op,
class... Args>
118template <
template <
class...>
class Op,
class... Args>
125 template <
typename T>
constexpr T &&
operator()(
T &&self)
const noexcept {
126 return std::forward<T>(self);
136template <
typename Optional,
typename Function,
138std::optional<std::invoke_result_t<Function, Value>>
141 return F(*std::forward<Optional>(O));
148template <
typename Enum>
150 return static_cast<std::underlying_type_t<Enum>
>(
E);
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
constexpr double inv_sqrt2
constexpr double inv_sqrt3
constexpr double inv_sqrtpi
This is an optimization pass for GlobalISel generic memory operations.
constexpr from_range_t from_range
constexpr std::underlying_type_t< Enum > to_underlying(Enum E)
Returns underlying integer value of an enum.
DWARFExpression::Operation Op
typename detail::detector< void, Op, Args... >::value_t is_detected
Detects if a given trait holds for some set of arguments 'Args'.
std::optional< std::invoke_result_t< Function, Value > > transformOptional(Optional &&O, Function &&F)
Implement std::hash so that hash_code can be used in STL containers.
constexpr T && operator()(T &&self) const noexcept
std::remove_cv_t< std::remove_reference_t< T > > type