28#ifndef LIB_META_UTIL_H
29#define LIB_META_UTIL_H
42 template <
typename T,
typename D>
56 using SizConst = std::integral_constant<size_t, siz>;
61 template <
bool B,
class T =
void>
86 template <
class Cond,
class T =
void>
89 template <
class Cond,
class T =
void>
113 template<
typename TY>
130 struct has_TypeResult : std::bool_constant<_DetectNested_TypeResult<X>::value> { };
135 template<
typename...>
140 template<
typename X,
typename...XS>
147 template<
typename...XS>
153 template<
class SELF,
typename ...ARGS>
176 template<
class XX,
int i = sizeof(&XX::operator std::
string)>
203 template<
typename TY>
219 template<
typename FUN>
222 template<
typename FF,
223 typename SEL =
decltype(&FF::operator())>
243 template<
class BAS,
size_t m=0>
250 template<
class BAS,
typename TAG =
void>
325 template<
typename TY>
336 template<
typename TY>
357 template<
typename TY>
366 template<
typename TY>
369 typeSymbol (
TY const& ref)
371 return typeSymbol (&ref);
400 template<
typename X,
typename COND =
void>
405 try {
return "«"+typeStr(x)+
"»"; }
406 catch(...) {
return FAILURE_INDICATOR; }
414 try {
return std::string(val); }
415 catch(...) {
return FAILURE_INDICATOR; }
425 ,std::is_same<std::remove_cv_t<X>,
void>
431 : BOTTOM_INDICATOR +
"«"+typeStr(ptr)+
"»";
433 catch(...) {
return FAILURE_INDICATOR; }
466 std::string
showSize (
size_t)
noexcept;
471 std::string showAdr (
void const* addr)
noexcept;
488 : BOTTOM_INDICATOR +
" «" + typeStr(ptr) +
"»";
491 template<
typename SP>
495 using TargetType = SP::element_type;
498 : BOTTOM_INDICATOR +
" «" + typeStr(smPtr) +
"»";
511 return uint(siz) * 1024u;
517 return uint(siz) * 1024u*1024u;
523 return siz * 1024uLL*1024uLL*1024uLL;
Inclusion for common place integral types and constants.
unsigned long long int ullong
Implementation namespace for support and library code.
string showComplete(double val) noexcept
show enough decimal digits to represent every distinct value
string showDouble(double val) noexcept
pretty-print a double in (rounded) fixed-point format
std::string showBool(bool yes) noexcept
human readable display of boolean values
ostream & showAdr(ostream &stream, void const *addr)
preconfigured format for pretty-printing of addresses
string showSize(size_t val) noexcept
string showDecimal(double val) noexcept
show maximum reproducible decimal representation
std::string showPtr(X *ptr=nullptr)
diagnostics helper for explicitly indicating pointers
string showFloat(float val) noexcept
std::string showSmartPtr(SP const &smPtr, std::string label="smP")
failsafe invocation of custom string conversion.
static std::string invoke(X const &x) noexcept