SimpleWindow
载入中...
搜索中...
未找到
Internal.h
1
#pragma once
2
3
#include <type_traits>
4
5
namespace
sw
6
{
10
template
<
typename
T>
11
using
_OptimalParamType
=
typename
std::conditional<
12
std::is_scalar<typename std::decay<T>::type>::value,
13
typename
std::decay<T>::type,
const
typename
std::decay<T>::type &>::type;
14
18
template
<
typename
TFrom,
typename
TTo,
typename
=
void
>
19
struct
_IsExplicitlyConvertable
: std::false_type {
20
};
21
25
template
<
typename
TFrom,
typename
TTo>
26
struct
_IsExplicitlyConvertable
<
27
TFrom
,
TTo
,
decltype
(
void
(
static_cast
<
TTo
>(std::
declval
<TFrom>())))> : std::true_type {
28
};
29
33
template
<
typename
TFrom,
typename
TTo>
34
using
_IsStaticCastable
=
_IsExplicitlyConvertable<TFrom, TTo>
;
35
39
template
<
typename
TFrom,
typename
TTo,
typename
=
void
>
40
struct
_IsDynamicCastable
: std::false_type {
41
};
42
46
template
<
typename
TFrom,
typename
TTo>
47
struct
_IsDynamicCastable
<
48
TFrom
,
TTo
,
decltype
(
void
(
dynamic_cast
<
TTo
>(std::
declval
<TFrom>())))> : std::true_type {
49
};
50
54
template
<
typename
T,
typename
=
void
>
55
struct
_HasToString
: std::false_type {
56
};
57
61
template
<
typename
T>
62
struct
_HasToString
<
63
T
,
decltype
(
void
(std::
declval
<T>().ToString()))> : std::true_type {
64
};
65
69
template
<
typename
TDelegate,
typename
TFunc,
typename
=
void
>
70
struct
_DelegateCanAddSubtract
: std::false_type {
71
};
72
76
template
<
typename
TDelegate,
typename
TFunc>
77
struct
_DelegateCanAddSubtract
<
78
TDelegate, TFunc,
79
decltype
(
void
(std::
declval
<TDelegate>() += std::declval<TFunc>()),
80
void
(std::declval<TDelegate>() -= std::declval<TFunc>()))>
81
: std::true_type {
82
};
83
}
sw::IValueConverter
值转换器接口
Definition
IValueConverter.h:14
sw
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition
Alignment.h:4
sw::_OptimalParamType
typename std::conditional< std::is_scalar< typename std::decay< T >::type >::value, typename std::decay< T >::type, const typename std::decay< T >::type & >::type _OptimalParamType
最佳参数类型,标量类型使用值传递,复杂类型使用常量引用传递
Definition
Internal.h:13
sw::VirtualKey::T
@ T
T key
sw::_DelegateCanAddSubtract
判断委托是否可以添加或删除指定类型的函数对象
Definition
Internal.h:70
sw::_HasToString
判断一个类型是否有ToString方法
Definition
Internal.h:55
sw::_IsDynamicCastable
判断类型是否可以使用dynamic_cast进行转换的辅助模板
Definition
Internal.h:40
sw::_IsExplicitlyConvertable
判断类型是否可以显式转换的辅助模板
Definition
Internal.h:19
sw
inc
Internal.h
制作者
1.9.8