Console Library 8.0.0
A header-only library that makes C++ simple
Loading...
Searching...
No Matches
类型特征

编译期检测类型特性的模板工具。 More...

Classes

struct  console::is_container< T, class >
 检测类型是否为容器(支持 std::begin 和 std::end)。 More...
struct  console::is_callable_impl< class, class >
struct  console::is_callable_impl< F(Args...), void_t< decltype(std::declval< F >()(std::declval< Args >()...))> >
struct  console::is_iterator< T, class >
 检测类型是否为迭代器(具有 iterator_category)。 More...
struct  console::has_subscript< T, Idx, class >
 检测类型是否支持下标操作符(如 T[Idx])。 More...
struct  console::is_string< T, class >
 检测类型是否为字符串类型(char*、std::string、std::string_view 等)。 More...
struct  console::is_printable< T, class >
 检测类型是否支持输出到 std::ostream(即定义了 operator<<)。 More...
struct  console::is_basic_printable< CharT, Traits, T, class >
 检测类型是否支持输出到指定字符类型的流(即定义了 operator<<)。 More...
struct  console::is_char< T, class >
 检测类型是否为字符类型(char、wchar_t 等)。 More...
struct  console::uniform_distribution_impl< T, typename >
 取得适配分布的主模板。 More...
struct  console::is_generator< T, class >
 检测类型是否为生成器(具有 done()、current()、advance() 接口)。 More...
struct  is_callable
 检测类型是否可作为函数对象以给定参数调用。 More...

Typedefs

template<typename... Args>
using console::void_t = void
 C++11 兼容的 void_t 实现。
template<class F, class... Args>
using console::is_callable = is_callable_impl<F(Args...), void>
template<class T>
using console::is_w_printable = is_basic_printable<wchar_t, std::char_traits<wchar_t>, T>
 is_basic_printable<wchar_t, ...> 的简写。
template<class F, class... Args>
using console::enable_if_callable
 启用若 F 可以 Args... 参数调用。
template<class F, class... Args>
using console::enable_if_not_callable
 启用若 F 不可以 Args... 参数调用。
template<class T>
using console::enable_if_iterator
 启用若 T 是迭代器。
template<class T>
using console::enable_if_not_iterator
 启用若 T 不是迭代器。
template<class T>
using console::enable_if_string
 启用若 T(decay 后)是字符串类型。
template<class T>
using console::enable_if_not_string
 启用若 T(decay 后)不是字符串类型。
template<class T>
using console::enable_if_printable
 启用若 T 可打印。
template<class T>
using console::enable_if_not_printable
 启用若 T 不可打印。
template<class T>
using console::enable_if_char
 启用若 T(decay 后)是字符类型。
template<class T>
using console::enable_if_not_char
 启用若 T(decay 后)不是字符类型。
template<typename T>
using console::uniform_distribution_t = typename uniform_distribution_impl<T>::type
 取得对印类型所对应的均匀分布。
template<class T>
using console::enable_if_generator
 启用若 T 是生成器。
template<class T>
using console::enable_if_not_generator
 启用若 T 不是生成器。
template<class CharT, class Traits, class T>
using console::enable_if_basic_printable
 启用若 T(decay 后)对给定字符流可打印。
template<class T>
using console::enable_if_w_printable
 启用若 T(decay 后)对 wchar_t 流可打印。

Detailed Description

编译期检测类型特性的模板工具。

Typedef Documentation

◆ enable_if_basic_printable

template<class CharT, class Traits, class T>
using console::enable_if_basic_printable
Initial value:
typename std::enable_if<is_basic_printable<CharT,
Traits,
typename std::decay<T>::type>::value>::type
检测类型是否支持输出到指定字符类型的流(即定义了 operator<<)。
Definition sfinae.h:177

启用若 T(decay 后)对给定字符流可打印。

◆ enable_if_callable

template<class F, class... Args>
using console::enable_if_callable
Initial value:
typename std::enable_if<is_callable<F, Args...>::value>::type
is_callable_impl< F(Args...), void > is_callable
Definition sfinae.h:82

启用若 F 可以 Args... 参数调用。

◆ enable_if_char

template<class T>
using console::enable_if_char
Initial value:
typename std::enable_if<
检测类型是否为字符类型(char、wchar_t 等)。
Definition sfinae.h:198

启用若 T(decay 后)是字符类型。

◆ enable_if_generator

template<class T>
using console::enable_if_generator
Initial value:
typename std::enable_if<is_generator<T>::value>::type

启用若 T 是生成器。

◆ enable_if_iterator

template<class T>
using console::enable_if_iterator
Initial value:
typename std::enable_if<is_iterator<T>::value>::type

启用若 T 是迭代器。

◆ enable_if_not_callable

template<class F, class... Args>
using console::enable_if_not_callable
Initial value:
typename std::enable_if<!is_callable<F, Args...>::value>::type

启用若 F 不可以 Args... 参数调用。

◆ enable_if_not_char

template<class T>
using console::enable_if_not_char
Initial value:
typename std::enable_if<

启用若 T(decay 后)不是字符类型。

◆ enable_if_not_generator

template<class T>
using console::enable_if_not_generator
Initial value:
typename std::enable_if<!is_generator<T>::value>::type

启用若 T 不是生成器。

◆ enable_if_not_iterator

template<class T>
using console::enable_if_not_iterator
Initial value:
typename std::enable_if<!is_iterator<T>::value>::type

启用若 T 不是迭代器。

◆ enable_if_not_printable

template<class T>
using console::enable_if_not_printable
Initial value:
typename std::enable_if<!is_printable<T>::value>::type

启用若 T 不可打印。

◆ enable_if_not_string

template<class T>
using console::enable_if_not_string
Initial value:
typename std::enable_if<
检测类型是否为字符串类型(char*、stdstring、std::string_view 等)。
Definition sfinae.h:123

启用若 T(decay 后)不是字符串类型。

◆ enable_if_printable

template<class T>
using console::enable_if_printable
Initial value:
typename std::enable_if<is_printable<T>::value>::type

启用若 T 可打印。

◆ enable_if_string

template<class T>
using console::enable_if_string
Initial value:
typename std::enable_if<

启用若 T(decay 后)是字符串类型。

◆ enable_if_w_printable

template<class T>
using console::enable_if_w_printable
Initial value:
typename std::enable_if<
is_basic_printable< wchar_t, std::char_traits< wchar_t >, T > is_w_printable
is_basic_printable<wchar_t, ...> 的简写。
Definition sfinae.h:190

启用若 T(decay 后)对 wchar_t 流可打印。

◆ is_callable

template<class F, class... Args>
using console::is_callable = is_callable_impl<F(Args...), void>

◆ is_w_printable

template<class T>
using console::is_w_printable = is_basic_printable<wchar_t, std::char_traits<wchar_t>, T>

◆ uniform_distribution_t

template<typename T>
using console::uniform_distribution_t = typename uniform_distribution_impl<T>::type

取得对印类型所对应的均匀分布。

◆ void_t

template<typename... Args>
using console::void_t = void

C++11 兼容的 void_t 实现。