9#ifndef LLVM_SUPPORT_FORMATVARIADICDETAILS_H
10#define LLVM_SUPPORT_FORMATVARIADICDETAILS_H
24 virtual void anchor();
50 : Item(
std::forward<
T>(Item)) {}
70 template <
typename U>
static double test(...);
73 (
sizeof(test<llvm::format_provider<Decayed>>(
nullptr)) == 1);
82 static char test(std::enable_if_t<
83 std::is_same_v<
decltype(std::declval<llvm::raw_ostream &>()
84 << std::declval<U>()),
88 template <
typename U>
static double test(...);
90 static bool const value = (
sizeof(test<ConstRefT>(
nullptr)) == 1);
97 :
public std::integral_constant<
98 bool, std::is_base_of_v<format_adapter, std::remove_reference_t<T>>> {
106 :
public std::integral_constant<
107 bool, !uses_format_member<T>::value && has_FormatProvider<T>::value> {
114 :
public std::integral_constant<bool, !uses_format_member<T>::value &&
115 !uses_format_provider<T>::value &&
116 has_StreamOperator<T>::value> {};
124 :
public std::integral_constant<bool, !uses_format_member<T>::value &&
125 !uses_format_provider<T>::value &&
126 !uses_stream_operator<T>::value> {
130std::enable_if_t<uses_format_member<T>::value,
T>
132 return std::forward<T>(Item);
136std::enable_if_t<uses_format_provider<T>::value, provider_format_adapter<T>>
142std::enable_if_t<uses_stream_operator<T>::value,
143 stream_operator_format_adapter<T>>
149 !std::is_same_v<llvm::Error, std::remove_cv_t<T>>,
150 "llvm::Error-by-value must be wrapped in fmt_consume() for formatv");
155std::enable_if_t<uses_missing_provider<T>::value, missing_format_adapter<T>>
Lightweight error class with error context and mandatory checking.
StringRef - Represent a constant reference to a string, i.e.
static char test(std::enable_if_t< std::is_same_v< decltype(std::declval< llvm::raw_ostream & >()<< std::declval< U >()), llvm::raw_ostream & >, int * >)
const std::decay_t< T > & ConstRefT
This class implements an extremely fast bulk output stream that can only output to a stream.
std::enable_if_t< uses_format_member< T >::value, T > build_format_adapter(T &&Item)
This is an optimization pass for GlobalISel generic memory operations.
Implement std::hash so that hash_code can be used in STL containers.