LLVM 22.0.0git
STLForwardCompat.h File Reference

This file contains library features backported from future STL versions. More...

#include <optional>
#include <type_traits>
#include <utility>

Go to the source code of this file.

Classes

struct  llvm::remove_cvref< T >
struct  llvm::type_identity< T >
struct  llvm::detail::detector< class, Op, Args >
struct  llvm::detail::detector< std::void_t< Op< Args... > >, Op, Args... >
struct  llvm::identity_cxx20
struct  llvm::from_range_t
class  llvm::remove_cvref_t

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
namespace  llvm::numbers
 Mathematical constants.
namespace  llvm::detail
 A self-contained host- and target-independent arbitrary-precision floating-point software implementation.

Macros

#define llvm::T
#define llvm::T

Typedefs

template<template< class... > class Op, class... Args>
using llvm::is_detected = typename detail::detector<void, Op, Args...>::value_t
 Detects if a given trait holds for some set of arguments 'Args'.

Functions

template<typename Optional, typename Function, typename Value = typename llvm::remove_cvref_t<Optional>::value_type>
std::optional< std::invoke_result_t< Function, Value > > llvm::transformOptional (Optional &&O, Function &&F)
template<typename Enum>
constexpr std::underlying_type_t< Enum > llvm::to_underlying (Enum E)
 Returns underlying integer value of an enum.

Variables

template<typename T, typename = std::enable_if_t<std::is_floating_point_v<T>>>
constexpr T llvm::numbers::e_v = T(0x1.5bf0a8b145769P+1)
template<typename T, typename = std::enable_if_t<std::is_floating_point_v<T>>>
constexpr T llvm::numbers::egamma_v = T(0x1.2788cfc6fb619P-1)
template<typename T, typename = std::enable_if_t<std::is_floating_point_v<T>>>
constexpr T llvm::numbers::ln2_v = T(0x1.62e42fefa39efP-1)
template<typename T, typename = std::enable_if_t<std::is_floating_point_v<T>>>
constexpr T llvm::numbers::ln10_v = T(0x1.26bb1bbb55516P+1)
template<typename T, typename = std::enable_if_t<std::is_floating_point_v<T>>>
constexpr T llvm::numbers::log2e_v = T(0x1.71547652b82feP+0)
template<typename T, typename = std::enable_if_t<std::is_floating_point_v<T>>>
constexpr T llvm::numbers::log10e_v = T(0x1.bcb7b1526e50eP-2)
template<typename T, typename = std::enable_if_t<std::is_floating_point_v<T>>>
constexpr T llvm::numbers::pi_v = T(0x1.921fb54442d18P+1)
template<typename T, typename = std::enable_if_t<std::is_floating_point_v<T>>>
constexpr T llvm::numbers::inv_pi_v = T(0x1.45f306dc9c883P-2)
template<typename T, typename = std::enable_if_t<std::is_floating_point_v<T>>>
constexpr T llvm::numbers::inv_sqrtpi_v = T(0x1.20dd750429b6dP-1)
template<typename T, typename = std::enable_if_t<std::is_floating_point_v<T>>>
constexpr T llvm::numbers::sqrt2_v = T(0x1.6a09e667f3bcdP+0)
template<typename T, typename = std::enable_if_t<std::is_floating_point_v<T>>>
constexpr T llvm::numbers::inv_sqrt2_v = T(0x1.6a09e667f3bcdP-1)
template<typename T, typename = std::enable_if_t<std::is_floating_point_v<T>>>
constexpr T llvm::numbers::sqrt3_v = T(0x1.bb67ae8584caaP+0)
template<typename T, typename = std::enable_if_t<std::is_floating_point_v<T>>>
constexpr T llvm::numbers::inv_sqrt3_v = T(0x1.279a74590331cP-1)
template<typename T, typename = std::enable_if_t<std::is_floating_point_v<T>>>
constexpr T llvm::numbers::phi_v = T(0x1.9e3779b97f4a8P+0)
constexpr double llvm::numbers::e = e_v<double>
constexpr double llvm::numbers::egamma = egamma_v<double>
constexpr double llvm::numbers::ln2 = ln2_v<double>
constexpr double llvm::numbers::ln10 = ln10_v<double>
constexpr double llvm::numbers::log2e = log2e_v<double>
constexpr double llvm::numbers::log10e = log10e_v<double>
constexpr double llvm::numbers::pi = pi_v<double>
constexpr double llvm::numbers::inv_pi = inv_pi_v<double>
constexpr double llvm::numbers::inv_sqrtpi = inv_sqrtpi_v<double>
constexpr double llvm::numbers::sqrt2 = sqrt2_v<double>
constexpr double llvm::numbers::inv_sqrt2 = inv_sqrt2_v<double>
constexpr double llvm::numbers::sqrt3 = sqrt3_v<double>
constexpr double llvm::numbers::inv_sqrt3 = inv_sqrt3_v<double>
constexpr double llvm::numbers::phi = phi_v<double>
constexpr from_range_t llvm::from_range {}

Detailed Description

This file contains library features backported from future STL versions.

These should be replaced with their STL counterparts as the C++ version LLVM is compiled with is updated.

Definition in file STLForwardCompat.h.