1 #pragma once // Source encoding: UTF-8 with BOM (π is a lowercase Greek "pi"). 13 CPPX_USE_STD( begin, end, declval, true_type, false_type );
15 template<
class Collection >
18 template< class C, int x = sizeof( declval<C>().empty() == true ) >
19 static auto test(
const C& ) -> true_type;
21 static auto test( ... ) -> false_type;
25 test( declval<Collection>() )
29 template<
class Collection >
32 template<
class Collection >
36 if constexpr( has_method_empty_<Collection> )
42 return begin( c ) == end( c );
Some_type * P_
Creates a raw pointer type.
constexpr Truth has_method_empty_
A drop-in replacement for bool without implicit conversion from/to types other than bool.
Truth is a drop-in replacement for bool without implicit conversion from/to types other than bool.
CPPX_USE_STD(basic_string, basic_string_view, bitset, char_traits, size)
Simple type builders Type_, P_, R_, Raw_array_ and Raw_array_of_.
auto is_empty(const Collection &c) -> Truth
static constexpr Truth value
Macros for generating more concise and clear using statements, primarily $use_cppx and $use_std,...