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}
值转换器接口
Definition IValueConverter.h:14
判断一个类型是否有ToString方法
Definition Internal.h:55
判断类型是否可以使用dynamic_cast进行转换的辅助模板
Definition Internal.h:40
判断类型是否可以显式转换的辅助模板
Definition Internal.h:19