SimpleWindow
载入中...
搜索中...
未找到
Internal.h
1#pragma once
2
3#include <type_traits>
4
5namespace 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>
27 TFrom, TTo, decltype(void(static_cast<TTo>(std::declval<TFrom>())))> : std::true_type {
28 };
29
33 template <typename TFrom, typename TTo>
35
39 template <typename TFrom, typename TTo, typename = void>
40 struct _IsDynamicCastable : std::false_type {
41 };
42
46 template <typename TFrom, typename TTo>
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>
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>
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}
值转换器接口
Definition IValueConverter.h:14
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition Alignment.h:4
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
判断委托是否可以添加或删除指定类型的函数对象
Definition Internal.h:70
判断一个类型是否有ToString方法
Definition Internal.h:55
判断类型是否可以使用dynamic_cast进行转换的辅助模板
Definition Internal.h:40
判断类型是否可以显式转换的辅助模板
Definition Internal.h:19