Console Library 8.0.0
A header-only library that makes C++ simple
Loading...
Searching...
No Matches
sfinae.h File Reference

提供编译期类型特征检测(SFINAE 工具), 用于判断容器、可调用对象、迭代器、下标访问、字符串、可打印类型、字符类型等。 More...

#include <iterator>
#include <random>
#include <type_traits>
#include "../io/outfwd.h"

Go to the source code of this file.

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::is_generator< T, class >
 检测类型是否为生成器(具有 done()、current()、advance() 接口)。 More...

Namespaces

namespace  console
 本库所有组件所在的顶层命名空间。

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

提供编译期类型特征检测(SFINAE 工具), 用于判断容器、可调用对象、迭代器、下标访问、字符串、可打印类型、字符类型等。

Author
MrXie1109
Date
2026