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
}
sw::IValueConverter
值转换器接口
Definition
IValueConverter.h:14
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