赞
踩
#include<type_traits>
template< class T > struct is_void;
类型为void则value值为true,否则为false。
std::cout << std::boolalpha;
std::cout << std::is_void<void>::value << '\n'; // true
std::cout << std::is_void<int>::value << '\n'; // false
实现:
template<class T>
struct is_void : std::is_same<void, typename std::remove_cv<T>::type> {};
is_constructible
is_trivially_constructible
is_nothrow_constructible
is_default_constructible
is_trivially_default_constructible
is_nothrow_default_constructible
is_copy_constructible
is_trivially_copy_constructible
is_nothrow_copy_constructible
is_move_constructible
is_trivially_move_constructible
is_nothrow_move_constructible
is_assignable
is_trivially_assignable
is_nothrow_assignable
is_copy_assignable
is_trivially_copy_assignable
is_nothrow_copy_assignable
is_move_assignable
is_trivially_move_assignable
is_nothrow_move_assignable
is_destructible
is_trivially_destructible
is_nothrow_destructible
has_virtual_destructor
remove_cv
remove_const
remove_volatile
add_cv
add_const
add_volatile
template< bool B, class T = void >
struct enable_if;
// C++14开始定义了以下:
template< bool B, class T = void >
using enable_if_t = typename enable_if<B,T>::type;
如果B为true,则std::enable_if有一个typedef的type,为T,否则没有这个typedef的成员
实现:
template<bool B, class T=void>
struct enable_if {};
template<true, class T>
struct enable_if {
typedef T type;
};
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。