11#define _SW_DEFINE_OPERATION_HELPER(NAME, OP) \
12 template <typename T, typename U, typename = void> \
13 struct NAME : std::false_type { \
15 template <typename T, typename U> \
16 struct NAME<T, U, decltype(void(std::declval<T>() OP std::declval<U>()))> : std::true_type { \
17 using type = decltype(std::declval<T>() OP std::declval<U>()); \
20#define _SW_DEFINE_UNARY_OPERATION_HELPER(NAME, OP) \
21 template <typename T, typename = void> \
22 struct NAME : std::false_type { \
24 template <typename T> \
25 struct NAME<T, decltype(void(OP std::declval<T>()))> : std::true_type { \
26 using type = decltype(OP std::declval<T>()); \
35 template <
typename T,
typename TDerived>
42 class ReadOnlyProperty;
45 class WriteOnlyProperty;
50 _SW_DEFINE_OPERATION_HELPER(_AddOperationHelper, +);
51 _SW_DEFINE_OPERATION_HELPER(_SubOperationHelper, -);
52 _SW_DEFINE_OPERATION_HELPER(_MulOperationHelper, *);
53 _SW_DEFINE_OPERATION_HELPER(_DivOperationHelper, /);
54 _SW_DEFINE_OPERATION_HELPER(_ModOperationHelper, %);
55 _SW_DEFINE_OPERATION_HELPER(_EqOperationHelper, ==);
56 _SW_DEFINE_OPERATION_HELPER(_NeOperationHelper, !=);
57 _SW_DEFINE_OPERATION_HELPER(_LtOperationHelper, <);
58 _SW_DEFINE_OPERATION_HELPER(_LeOperationHelper, <=);
59 _SW_DEFINE_OPERATION_HELPER(_GtOperationHelper, >);
60 _SW_DEFINE_OPERATION_HELPER(_GeOperationHelper, >=);
61 _SW_DEFINE_OPERATION_HELPER(_BitAndOperationHelper, &);
62 _SW_DEFINE_OPERATION_HELPER(_BitOrOperationHelper, |);
63 _SW_DEFINE_OPERATION_HELPER(_BitXorOperationHelper, ^);
64 _SW_DEFINE_OPERATION_HELPER(_ShlOperationHelper, <<);
65 _SW_DEFINE_OPERATION_HELPER(_ShrOperationHelper, >>);
66 _SW_DEFINE_OPERATION_HELPER(_LogicAndOperationHelper, &&);
67 _SW_DEFINE_OPERATION_HELPER(_LogicOrOperationHelper, ||);
68 _SW_DEFINE_UNARY_OPERATION_HELPER(_LogicNotOperationHelper, !);
69 _SW_DEFINE_UNARY_OPERATION_HELPER(_BitNotOperationHelper, ~);
70 _SW_DEFINE_UNARY_OPERATION_HELPER(_DerefOperationHelper, *);
72 _SW_DEFINE_UNARY_OPERATION_HELPER(_UnaryPlusOperationHelper, +);
73 _SW_DEFINE_UNARY_OPERATION_HELPER(_UnaryMinusOperationHelper, -);
83 template <
typename U,
typename V>
85 static std::false_type test(...);
88 using type =
decltype(test(std::declval<T *>()));
101 template <
typename,
typename =
void>
108 template <
typename T>
116 template <
typename,
typename =
void>
123 template <
typename T>
131 template <
typename T>
133 : std::integral_constant<bool, _IsProperty<T>::value && _HasGetterImpl<T>::value> {
139 template <
typename T>
141 : std::integral_constant<bool, _IsProperty<T>::value && _HasSetterImpl<T>::value> {
147 template <
typename T,
typename U,
typename =
void>
154 template <
typename T,
typename U>
157 using type =
decltype(std::declval<T>()[std::declval<U>()]);
163 template <
typename T,
typename =
void>
170 template <
typename T>
173 using type =
decltype(std::declval<T>().operator->());
179 template <
typename T>
187 template <
typename T>
197 template <
typename...
Args>
206 template <
typename U = T>
208 ->
typename std::enable_if<std::is_pointer<U>::value,
U>::type
216 template <
typename U = T>
226 template <
typename U = T>
230 return this->value.operator->();
237 template <
typename TOwner,
typename TValue>
253 TValue (*_getter)(
TOwner *);
290 template <TValue (TOwner::*getter)()>
302 template <TValue (TOwner::*getter)() const>
314 template <
void (TOwner::*setter)(_PropertySetterParamType<TValue>)>
326 template <
void (TOwner::*setter)(_PropertySetterParamType<TValue>) const>
338 template <TValue TOwner::*field>
350 template <TValue TOwner::*field>
363 template <
typename TValue>
414 template <
typename T,
typename TDerived>
447 return static_cast<const TDerived *
>(
this)->GetterImpl();
455 static_cast<const TDerived *
>(
this)->SetterImpl(value);
479 typename =
typename std::enable_if<!std::is_arithmetic<T>::value && std::is_convertible<T, U>::value,
U>::type>
482 return static_cast<U>(this->
Get());
490 typename =
typename std::enable_if<!std::is_arithmetic<T>::value && !std::is_convertible<T, U>::value,
U>::type,
492 explicit operator U()
const
494 return static_cast<U>(this->
Get());
503 return *
static_cast<TDerived *
>(
this);
512 return *
static_cast<const TDerived *
>(
this);
521 return *
static_cast<TDerived *
>(
this);
530 return *
static_cast<const TDerived *
>(
this);
536 template <
typename U>
538 ->
typename std::enable_if<_AddOperationHelper<T, U>::value,
TDerived &>::type
540 this->
Set(this->
Get() + std::forward<U>(value));
541 return *
static_cast<TDerived *
>(
this);
547 template <
typename U>
549 ->
typename std::enable_if<_AddOperationHelper<T, U>::value,
const TDerived &>::type
551 this->
Set(this->
Get() + std::forward<U>(value));
552 return *
static_cast<const TDerived *
>(
this);
558 template <
typename D,
typename U>
560 ->
typename std::enable_if<_AddOperationHelper<T, U>::value,
TDerived &>::type
563 return *
static_cast<TDerived *
>(
this);
569 template <
typename D,
typename U>
571 ->
typename std::enable_if<_AddOperationHelper<T, U>::value,
const TDerived &>::type
574 return *
static_cast<const TDerived *
>(
this);
580 template <
typename U>
582 ->
typename std::enable_if<_SubOperationHelper<T, U>::value,
TDerived &>::type
584 this->
Set(this->
Get() - std::forward<U>(value));
585 return *
static_cast<TDerived *
>(
this);
591 template <
typename U>
593 ->
typename std::enable_if<_SubOperationHelper<T, U>::value,
const TDerived &>::type
595 this->
Set(this->
Get() - std::forward<U>(value));
596 return *
static_cast<const TDerived *
>(
this);
602 template <
typename D,
typename U>
604 ->
typename std::enable_if<_SubOperationHelper<T, U>::value,
TDerived &>::type
607 return *
static_cast<TDerived *
>(
this);
613 template <
typename D,
typename U>
615 ->
typename std::enable_if<_SubOperationHelper<T, U>::value,
const TDerived &>::type
618 return *
static_cast<const TDerived *
>(
this);
624 template <
typename U>
626 ->
typename std::enable_if<_MulOperationHelper<T, U>::value,
TDerived &>::type
628 this->
Set(this->
Get() * std::forward<U>(value));
629 return *
static_cast<TDerived *
>(
this);
635 template <
typename U>
637 ->
typename std::enable_if<_MulOperationHelper<T, U>::value,
const TDerived &>::type
639 this->
Set(this->
Get() * std::forward<U>(value));
640 return *
static_cast<const TDerived *
>(
this);
646 template <
typename D,
typename U>
648 ->
typename std::enable_if<_MulOperationHelper<T, U>::value,
TDerived &>::type
651 return *
static_cast<TDerived *
>(
this);
657 template <
typename D,
typename U>
659 ->
typename std::enable_if<_MulOperationHelper<T, U>::value,
const TDerived &>::type
662 return *
static_cast<const TDerived *
>(
this);
668 template <
typename U>
670 ->
typename std::enable_if<_DivOperationHelper<T, U>::value,
TDerived &>::type
672 this->
Set(this->
Get() / std::forward<U>(value));
673 return *
static_cast<TDerived *
>(
this);
679 template <
typename U>
681 ->
typename std::enable_if<_DivOperationHelper<T, U>::value,
const TDerived &>::type
683 this->
Set(this->
Get() / std::forward<U>(value));
684 return *
static_cast<const TDerived *
>(
this);
690 template <
typename D,
typename U>
692 ->
typename std::enable_if<_DivOperationHelper<T, U>::value,
TDerived &>::type
695 return *
static_cast<TDerived *
>(
this);
701 template <
typename D,
typename U>
703 ->
typename std::enable_if<_DivOperationHelper<T, U>::value,
const TDerived &>::type
706 return *
static_cast<const TDerived *
>(
this);
712 template <
typename U = T>
714 ->
typename std::enable_if<_AddOperationHelper<U, int>::value,
TDerived &>::type
716 this->
Set(this->
Get() + 1);
717 return *
static_cast<TDerived *
>(
this);
723 template <
typename U = T>
727 this->
Set(this->
Get() + 1);
728 return *
static_cast<const TDerived *
>(
this);
734 template <
typename U = T>
736 ->
typename std::enable_if<_SubOperationHelper<U, int>::value,
TDerived &>::type
738 this->
Set(this->
Get() - 1);
739 return *
static_cast<TDerived *
>(
this);
745 template <
typename U = T>
749 this->
Set(this->
Get() - 1);
750 return *
static_cast<const TDerived *
>(
this);
756 template <
typename U = T>
758 ->
typename std::enable_if<_AddOperationHelper<U, int>::value,
T>::type
761 this->
Set(oldval + 1);
768 template <
typename U = T>
770 ->
typename std::enable_if<_SubOperationHelper<U, int>::value,
T>::type
773 this->
Set(oldval - 1);
780 template <
typename U>
782 ->
typename std::enable_if<_BitAndOperationHelper<T, U>::value,
TDerived &>::type
784 this->
Set(this->
Get() & std::forward<U>(value));
785 return *
static_cast<TDerived *
>(
this);
791 template <
typename U>
793 ->
typename std::enable_if<_BitAndOperationHelper<T, U>::value,
const TDerived &>::type
795 this->
Set(this->
Get() & std::forward<U>(value));
796 return *
static_cast<const TDerived *
>(
this);
802 template <
typename D,
typename U>
804 ->
typename std::enable_if<_BitAndOperationHelper<T, U>::value,
TDerived &>::type
807 return *
static_cast<TDerived *
>(
this);
813 template <
typename D,
typename U>
815 ->
typename std::enable_if<_BitAndOperationHelper<T, U>::value,
const TDerived &>::type
818 return *
static_cast<const TDerived *
>(
this);
824 template <
typename U>
826 ->
typename std::enable_if<_BitOrOperationHelper<T, U>::value,
TDerived &>::type
828 this->
Set(this->
Get() | std::forward<U>(value));
829 return *
static_cast<TDerived *
>(
this);
835 template <
typename U>
837 ->
typename std::enable_if<_BitOrOperationHelper<T, U>::value,
const TDerived &>::type
839 this->
Set(this->
Get() | std::forward<U>(value));
840 return *
static_cast<const TDerived *
>(
this);
846 template <
typename D,
typename U>
848 ->
typename std::enable_if<_BitOrOperationHelper<T, U>::value,
TDerived &>::type
851 return *
static_cast<TDerived *
>(
this);
857 template <
typename D,
typename U>
859 ->
typename std::enable_if<_BitOrOperationHelper<T, U>::value,
const TDerived &>::type
862 return *
static_cast<const TDerived *
>(
this);
868 template <
typename U>
870 ->
typename std::enable_if<_BitXorOperationHelper<T, U>::value,
TDerived &>::type
872 this->
Set(this->
Get() ^ std::forward<U>(value));
873 return *
static_cast<TDerived *
>(
this);
879 template <
typename U>
881 ->
typename std::enable_if<_BitXorOperationHelper<T, U>::value,
const TDerived &>::type
883 this->
Set(this->
Get() ^ std::forward<U>(value));
884 return *
static_cast<const TDerived *
>(
this);
890 template <
typename D,
typename U>
892 ->
typename std::enable_if<_BitXorOperationHelper<T, U>::value,
TDerived &>::type
895 return *
static_cast<TDerived *
>(
this);
901 template <
typename D,
typename U>
903 ->
typename std::enable_if<_BitXorOperationHelper<T, U>::value,
const TDerived &>::type
906 return *
static_cast<const TDerived *
>(
this);
912 template <
typename U>
914 ->
typename std::enable_if<_ShlOperationHelper<T, U>::value,
TDerived &>::type
916 this->
Set(this->
Get() << std::forward<U>(value));
917 return *
static_cast<TDerived *
>(
this);
923 template <
typename U>
925 ->
typename std::enable_if<_ShlOperationHelper<T, U>::value,
const TDerived &>::type
927 this->
Set(this->
Get() << std::forward<U>(value));
928 return *
static_cast<const TDerived *
>(
this);
934 template <
typename D,
typename U>
936 ->
typename std::enable_if<_ShlOperationHelper<T, U>::value,
TDerived &>::type
939 return *
static_cast<TDerived *
>(
this);
945 template <
typename D,
typename U>
947 ->
typename std::enable_if<_ShlOperationHelper<T, U>::value,
const TDerived &>::type
950 return *
static_cast<const TDerived *
>(
this);
956 template <
typename U>
958 ->
typename std::enable_if<_ShrOperationHelper<T, U>::value,
TDerived &>::type
960 this->
Set(this->
Get() >> std::forward<U>(value));
961 return *
static_cast<TDerived *
>(
this);
967 template <
typename U>
969 ->
typename std::enable_if<_ShrOperationHelper<T, U>::value,
const TDerived &>::type
971 this->
Set(this->
Get() >> std::forward<U>(value));
972 return *
static_cast<const TDerived *
>(
this);
978 template <
typename D,
typename U>
980 ->
typename std::enable_if<_ShrOperationHelper<T, U>::value,
TDerived &>::type
983 return *
static_cast<TDerived *
>(
this);
989 template <
typename D,
typename U>
991 ->
typename std::enable_if<_ShrOperationHelper<T, U>::value,
const TDerived &>::type
994 return *
static_cast<const TDerived *
>(
this);
1000 template <
typename U = T>
1004 return !this->
Get();
1010 template <
typename U = T>
1014 return ~this->Get();
1023 template <
typename U = T>
1030 return *this->
Get();
1038 template <
typename U = T>
1044 return *this->
Get();
1050 template <
typename U = T>
1054 return +this->
Get();
1060 template <
typename U = T>
1064 return -this->
Get();
1070 template <
typename U>
1074 return this->
Get() + std::forward<U>(value);
1080 template <
typename D,
typename U>
1084 return this->
Get() +
prop.Get();
1090 template <
typename U>
1094 return this->
Get() - std::forward<U>(value);
1100 template <
typename D,
typename U>
1104 return this->
Get() -
prop.Get();
1110 template <
typename U>
1114 return this->
Get() * std::forward<U>(value);
1120 template <
typename D,
typename U>
1124 return this->
Get() *
prop.Get();
1130 template <
typename U>
1134 return this->
Get() / std::forward<U>(value);
1140 template <
typename D,
typename U>
1144 return this->
Get() /
prop.Get();
1150 template <
typename U>
1154 return this->
Get() % std::forward<U>(value);
1160 template <
typename D,
typename U>
1164 return this->
Get() %
prop.Get();
1170 template <
typename U>
1174 return this->
Get() == std::forward<U>(value);
1180 template <
typename D,
typename U>
1184 return this->
Get() ==
prop.Get();
1191 template <
typename U>
1195 return !(*
this == std::forward<U>(value));
1202 template <
typename D,
typename U>
1206 return !(*
this ==
prop);
1212 template <
typename U>
1216 return this->
Get() < std::forward<U>(value);
1222 template <
typename D,
typename U>
1226 return this->
Get() <
prop.Get();
1232 template <
typename U>
1236 return this->
Get() <= std::forward<U>(value);
1242 template <
typename D,
typename U>
1246 return this->
Get() <=
prop.Get();
1252 template <
typename U>
1256 return this->
Get() > std::forward<U>(value);
1262 template <
typename D,
typename U>
1266 return this->
Get() >
prop.Get();
1272 template <
typename U>
1276 return this->
Get() >= std::forward<U>(value);
1282 template <
typename D,
typename U>
1286 return this->
Get() >=
prop.Get();
1292 template <
typename U>
1296 return this->
Get() & std::forward<U>(value);
1302 template <
typename D,
typename U>
1306 return this->
Get() &
prop.Get();
1312 template <
typename U>
1316 return this->
Get() | std::forward<U>(value);
1322 template <
typename D,
typename U>
1326 return this->
Get() |
prop.Get();
1332 template <
typename U>
1336 return this->
Get() ^ std::forward<U>(value);
1342 template <
typename D,
typename U>
1346 return this->
Get() ^
prop.Get();
1352 template <
typename U>
1356 return this->
Get() << std::forward<U>(value);
1362 template <
typename D,
typename U>
1366 return this->
Get() <<
prop.Get();
1372 template <
typename U>
1376 return this->
Get() >> std::forward<U>(value);
1382 template <
typename D,
typename U>
1386 return this->
Get() >>
prop.Get();
1392 template <
typename U>
1396 return this->
Get() && std::forward<U>(value);
1402 template <
typename D,
typename U>
1406 return this->
Get() &&
prop.Get();
1412 template <
typename U>
1416 return this->
Get() || std::forward<U>(value);
1422 template <
typename D,
typename U>
1426 return this->
Get() ||
prop.Get();
1435 template <
typename U>
1437 ->
typename std::enable_if<
1439 !std::is_reference<typename _BracketOperationHelper<T, U>::type>::value,
1442 return this->
Get()[std::forward<U>(value)];
1451 template <
typename D,
typename U>
1453 ->
typename std::enable_if<
1455 !std::is_reference<typename _BracketOperationHelper<T, U>::type>::value,
1458 return this->
Get()[
prop.Get()];
1466 template <
typename U>
1468 ->
typename std::enable_if<
1472 return this->
Get()[std::forward<U>(value)];
1480 template <
typename D,
typename U>
1482 ->
typename std::enable_if<
1486 return this->
Get()[
prop.Get()];
1501 (std::numeric_limits<std::ptrdiff_t>::max)();
1521 if (
owner ==
nullptr) {
1544 template <
typename TOwner>
1566 template <
typename D,
typename T,
typename U>
1570 return std::forward<T>(left) + right.Get();
1576 template <
typename D,
typename T,
typename U>
1580 return std::forward<T>(left) - right.Get();
1586 template <
typename D,
typename T,
typename U>
1590 return std::forward<T>(left) * right.Get();
1596 template <
typename D,
typename T,
typename U>
1600 return std::forward<T>(left) / right.Get();
1606 template <
typename D,
typename T,
typename U>
1610 return std::forward<T>(left) % right.Get();
1616 template <
typename D,
typename T,
typename U>
1620 return std::forward<T>(left) == right.Get();
1627 template <
typename D,
typename T,
typename U>
1631 return !(std::forward<T>(left) == right);
1637 template <
typename D,
typename T,
typename U>
1641 return std::forward<T>(left) < right.Get();
1647 template <
typename D,
typename T,
typename U>
1651 return std::forward<T>(left) <= right.Get();
1657 template <
typename D,
typename T,
typename U>
1661 return std::forward<T>(left) > right.Get();
1667 template <
typename D,
typename T,
typename U>
1671 return std::forward<T>(left) >= right.Get();
1677 template <
typename D,
typename T,
typename U>
1681 return std::forward<T>(left) & right.Get();
1687 template <
typename D,
typename T,
typename U>
1691 return std::forward<T>(left) | right.Get();
1697 template <
typename D,
typename T,
typename U>
1701 return std::forward<T>(left) ^ right.Get();
1707 template <
typename D,
typename T,
typename U>
1711 return std::forward<T>(left) << right.Get();
1717 template <
typename D,
typename T,
typename U>
1721 return std::forward<T>(left) >> right.Get();
1727 template <
typename D,
typename T,
typename U>
1731 return std::forward<T>(left) && right.Get();
1737 template <
typename D,
typename T,
typename U>
1741 return std::forward<T>(left) || right.Get();
1749 template <
typename T>
1754 using TValue =
typename TBase::TValue;
1777 using TBase::operator=;
1782 template <
typename TOwner>
1789 this->
SetOwner(initializer._owner);
1790 this->_getter =
reinterpret_cast<TFuncPtr
>(
initializer._getter);
1791 this->_setter =
reinterpret_cast<TFuncPtr
>(
initializer._setter);
1803 this->_getter =
reinterpret_cast<TFuncPtr
>(
initializer._getter);
1804 this->_setter =
reinterpret_cast<TFuncPtr
>(
initializer._setter);
1835 template <
typename T>
1840 using TValue =
typename TBase::TValue;
1856 template <
typename TOwner>
1862 this->
SetOwner(initializer._owner);
1863 this->_getter =
reinterpret_cast<TFuncPtr
>(
initializer._getter);
1874 this->_getter =
reinterpret_cast<TFuncPtr
>(
initializer._getter);
1893 template <
typename T>
1898 using TValue =
typename TBase::TValue;
1914 using TBase::operator=;
1919 template <
typename TOwner>
1925 this->
SetOwner(initializer._owner);
1926 this->_setter =
reinterpret_cast<TFuncPtr
>(
initializer._setter);
1937 this->_setter =
reinterpret_cast<TFuncPtr
>(
initializer._setter);
1962#define _SW_DECLARE_EXTERN_PROPERTY_TEMPLATE(T) \
1963 extern template class sw::Property<T>; \
1964 extern template class sw::ReadOnlyProperty<T>; \
1965 extern template class sw::WriteOnlyProperty<T>
1967#define _SW_DEFINE_EXTERN_PROPERTY_TEMPLATE(T) \
1968 template class sw::Property<T>; \
1969 template class sw::ReadOnlyProperty<T>; \
1970 template class sw::WriteOnlyProperty<T>
1972_SW_DECLARE_EXTERN_PROPERTY_TEMPLATE(
bool);
1973_SW_DECLARE_EXTERN_PROPERTY_TEMPLATE(
float);
1974_SW_DECLARE_EXTERN_PROPERTY_TEMPLATE(
double);
1975_SW_DECLARE_EXTERN_PROPERTY_TEMPLATE(int8_t);
1976_SW_DECLARE_EXTERN_PROPERTY_TEMPLATE(int16_t);
1977_SW_DECLARE_EXTERN_PROPERTY_TEMPLATE(int32_t);
1978_SW_DECLARE_EXTERN_PROPERTY_TEMPLATE(int64_t);
1979_SW_DECLARE_EXTERN_PROPERTY_TEMPLATE(uint8_t);
1980_SW_DECLARE_EXTERN_PROPERTY_TEMPLATE(uint16_t);
1981_SW_DECLARE_EXTERN_PROPERTY_TEMPLATE(uint32_t);
1982_SW_DECLARE_EXTERN_PROPERTY_TEMPLATE(uint64_t);
1983_SW_DECLARE_EXTERN_PROPERTY_TEMPLATE(std::string);
1984_SW_DECLARE_EXTERN_PROPERTY_TEMPLATE(std::wstring);
值转换器接口
Definition IValueConverter.h:14
成员属性初始化器
Definition Property.h:239
MemberPropertyInitializer & Setter()
设置成员函数setter
Definition Property.h:315
MemberPropertyInitializer & Getter(TValue(*getter)(TOwner *))
设置getter
Definition Property.h:272
MemberPropertyInitializer(TOwner *owner)
构造成员属性初始化器
Definition Property.h:264
MemberPropertyInitializer & Setter(void(*setter)(TOwner *, _PropertySetterParamType< TValue >))
设置setter
Definition Property.h:281
MemberPropertyInitializer & Getter()
设置成员函数getter
Definition Property.h:291
属性基类模板
Definition Property.h:416
auto operator[](const PropertyBase< U, D > &prop) const -> typename std::enable_if< _BracketOperationHelper< T, U >::value &&std::is_pointer< T >::value, typename _BracketOperationHelper< T, U >::type >::type
指针下标运算
Definition Property.h:1481
auto operator[](U &&value) const -> typename std::enable_if< _BracketOperationHelper< T, U >::value &&std::is_pointer< T >::value, typename _BracketOperationHelper< T, U >::type >::type
指针下标运算
Definition Property.h:1467
auto operator==(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _EqOperationHelper< T, U >::value, typename _EqOperationHelper< T, U >::type >::type
等于运算
Definition Property.h:1181
void SetOwner(void *owner) noexcept
设置属性所有者对象,nullptr表示静态属性
Definition Property.h:1519
auto operator/=(U &&value) -> typename std::enable_if< _DivOperationHelper< T, U >::value, TDerived & >::type
除赋值运算
Definition Property.h:669
auto operator++(int) const -> typename std::enable_if< _AddOperationHelper< U, int >::value, T >::type
后置自增运算
Definition Property.h:757
auto operator>(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _GtOperationHelper< T, U >::value, typename _GtOperationHelper< T, U >::type >::type
大于运算
Definition Property.h:1263
auto operator>>(U &&value) const -> typename std::enable_if< _ShrOperationHelper< T, U >::value, typename _ShrOperationHelper< T, U >::type >::type
右移运算
Definition Property.h:1373
auto operator%(U &&value) const -> typename std::enable_if< _ModOperationHelper< T, U >::value, typename _ModOperationHelper< T, U >::type >::type
取模运算
Definition Property.h:1151
T Get() const
获取属性值
Definition Property.h:445
auto operator/=(U &&value) const -> typename std::enable_if< _DivOperationHelper< T, U >::value, const TDerived & >::type
除赋值运算
Definition Property.h:680
auto operator>>=(U &&value) const -> typename std::enable_if< _ShrOperationHelper< T, U >::value, const TDerived & >::type
右移赋值运算
Definition Property.h:968
auto operator--(int) const -> typename std::enable_if< _SubOperationHelper< U, int >::value, T >::type
后置自减运算
Definition Property.h:769
auto operator||(U &&value) const -> typename std::enable_if< _LogicOrOperationHelper< T, U >::value, typename _LogicOrOperationHelper< T, U >::type >::type
逻辑或运算
Definition Property.h:1413
auto operator*(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _MulOperationHelper< T, U >::value, typename _MulOperationHelper< T, U >::type >::type
乘法运算
Definition Property.h:1121
auto operator<<=(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _ShlOperationHelper< T, U >::value, const TDerived & >::type
左移赋值运算
Definition Property.h:946
auto operator+(U &&value) const -> typename std::enable_if< _AddOperationHelper< T, U >::value, typename _AddOperationHelper< T, U >::type >::type
加法运算
Definition Property.h:1071
auto operator^=(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _BitXorOperationHelper< T, U >::value, const TDerived & >::type
按位异或赋值运算
Definition Property.h:902
auto operator|(U &&value) const -> typename std::enable_if< _BitOrOperationHelper< T, U >::value, typename _BitOrOperationHelper< T, U >::type >::type
按位或运算
Definition Property.h:1313
auto operator--() const -> typename std::enable_if< _SubOperationHelper< U, int >::value, const TDerived & >::type
前置自减运算
Definition Property.h:746
auto operator&=(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _BitAndOperationHelper< T, U >::value, const TDerived & >::type
按位与赋值运算
Definition Property.h:814
auto operator<<(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _ShlOperationHelper< T, U >::value, typename _ShlOperationHelper< T, U >::type >::type
左移运算
Definition Property.h:1363
auto operator|(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _BitOrOperationHelper< T, U >::value, typename _BitOrOperationHelper< T, U >::type >::type
按位或运算
Definition Property.h:1323
auto operator>=(U &&value) const -> typename std::enable_if< _GeOperationHelper< T, U >::value, typename _GeOperationHelper< T, U >::type >::type
大于等于运算
Definition Property.h:1273
auto operator+(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _AddOperationHelper< T, U >::value, typename _AddOperationHelper< T, U >::type >::type
加法运算
Definition Property.h:1081
auto operator/(U &&value) const -> typename std::enable_if< _DivOperationHelper< T, U >::value, typename _DivOperationHelper< T, U >::type >::type
除法运算
Definition Property.h:1131
const TDerived & operator=(TSetterParam value) const
设置属性值
Definition Property.h:509
const TDerived & operator=(const PropertyBase &prop) const
设置属性值
Definition Property.h:527
auto operator[](const PropertyBase< U, D > &prop) const -> typename std::enable_if< _BracketOperationHelper< T, U >::value &&!std::is_reference< typename _BracketOperationHelper< T, U >::type >::value, typename _BracketOperationHelper< T, U >::type >::type
下标运算
Definition Property.h:1452
auto operator/=(const PropertyBase< U, D > &prop) -> typename std::enable_if< _DivOperationHelper< T, U >::value, TDerived & >::type
除赋值运算
Definition Property.h:691
auto operator!=(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _EqOperationHelper< T, U >::value, typename _EqOperationHelper< T, U >::type >::type
不等于运算
Definition Property.h:1203
auto operator++() -> typename std::enable_if< _AddOperationHelper< U, int >::value, TDerived & >::type
前置自增运算
Definition Property.h:713
auto operator==(U &&value) const -> typename std::enable_if< _EqOperationHelper< T, U >::value, typename _EqOperationHelper< T, U >::type >::type
等于运算
Definition Property.h:1171
auto operator|=(const PropertyBase< U, D > &prop) -> typename std::enable_if< _BitOrOperationHelper< T, U >::value, TDerived & >::type
按位或赋值运算
Definition Property.h:847
auto operator+=(const PropertyBase< U, D > &prop) -> typename std::enable_if< _AddOperationHelper< T, U >::value, TDerived & >::type
加赋值运算
Definition Property.h:559
std::ptrdiff_t _offset
所有者对象相对于当前属性对象的偏移量
Definition Property.h:1506
auto operator|=(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _BitOrOperationHelper< T, U >::value, const TDerived & >::type
按位或赋值运算
Definition Property.h:858
auto operator&=(U &&value) -> typename std::enable_if< _BitAndOperationHelper< T, U >::value, TDerived & >::type
按位与赋值运算
Definition Property.h:781
static constexpr std::ptrdiff_t _STATICOFFSET
静态属性偏移量标记
Definition Property.h:1500
auto operator<(U &&value) const -> typename std::enable_if< _LtOperationHelper< T, U >::value, typename _LtOperationHelper< T, U >::type >::type
小于运算
Definition Property.h:1213
auto operator-() const -> typename std::enable_if< _UnaryMinusOperationHelper< U >::value, typename _UnaryMinusOperationHelper< U >::type >::type
负号运算
Definition Property.h:1061
auto operator||(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _LogicOrOperationHelper< T, U >::value, typename _LogicOrOperationHelper< T, U >::type >::type
逻辑或运算
Definition Property.h:1423
auto operator-=(U &&value) -> typename std::enable_if< _SubOperationHelper< T, U >::value, TDerived & >::type
减赋值运算
Definition Property.h:581
auto operator-(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _SubOperationHelper< T, U >::value, typename _SubOperationHelper< T, U >::type >::type
减法运算
Definition Property.h:1101
TDerived & operator=(const PropertyBase &prop)
设置属性值
Definition Property.h:518
static auto Init() -> StaticPropertyInitializer< T >
获取静态属性初始化器
Definition Property.h:1554
auto operator>(U &&value) const -> typename std::enable_if< _GtOperationHelper< T, U >::value, typename _GtOperationHelper< T, U >::type >::type
大于运算
Definition Property.h:1253
auto operator*(U &&value) const -> typename std::enable_if< _MulOperationHelper< T, U >::value, typename _MulOperationHelper< T, U >::type >::type
乘法运算
Definition Property.h:1111
auto operator&=(U &&value) const -> typename std::enable_if< _BitAndOperationHelper< T, U >::value, const TDerived & >::type
按位与赋值运算
Definition Property.h:792
auto operator--() -> typename std::enable_if< _SubOperationHelper< U, int >::value, TDerived & >::type
前置自减运算
Definition Property.h:735
auto operator<=(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _LeOperationHelper< T, U >::value, typename _LeOperationHelper< T, U >::type >::type
小于等于运算
Definition Property.h:1243
auto operator>>=(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _ShrOperationHelper< T, U >::value, const TDerived & >::type
右移赋值运算
Definition Property.h:990
auto operator&(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _BitAndOperationHelper< T, U >::value, typename _BitAndOperationHelper< T, U >::type >::type
按位与运算
Definition Property.h:1303
static auto Init(TOwner *owner) -> MemberPropertyInitializer< TOwner, T >
获取成员属性初始化器
Definition Property.h:1545
auto operator&&(U &&value) const -> typename std::enable_if< _LogicAndOperationHelper< T, U >::value, typename _LogicAndOperationHelper< T, U >::type >::type
逻辑与运算
Definition Property.h:1393
auto operator~() const -> typename std::enable_if< _BitNotOperationHelper< U >::value, typename _BitNotOperationHelper< U >::type >::type
按位非运算
Definition Property.h:1011
auto operator-=(const PropertyBase< U, D > &prop) -> typename std::enable_if< _SubOperationHelper< T, U >::value, TDerived & >::type
减赋值运算
Definition Property.h:603
auto operator-(U &&value) const -> typename std::enable_if< _SubOperationHelper< T, U >::value, typename _SubOperationHelper< T, U >::type >::type
减法运算
Definition Property.h:1091
void Set(TSetterParam value) const
设置属性值
Definition Property.h:453
auto operator++() const -> typename std::enable_if< _AddOperationHelper< U, int >::value, const TDerived & >::type
前置自增运算
Definition Property.h:724
auto operator[](U &&value) const -> typename std::enable_if< _BracketOperationHelper< T, U >::value &&!std::is_reference< typename _BracketOperationHelper< T, U >::type >::value, typename _BracketOperationHelper< T, U >::type >::type
下标运算
Definition Property.h:1436
auto operator*=(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _MulOperationHelper< T, U >::value, const TDerived & >::type
乘赋值运算
Definition Property.h:658
auto operator^=(U &&value) -> typename std::enable_if< _BitXorOperationHelper< T, U >::value, TDerived & >::type
按位异或赋值运算
Definition Property.h:869
bool IsStatic() const noexcept
判断属性是否为静态属性
Definition Property.h:1511
auto operator^(U &&value) const -> typename std::enable_if< _BitXorOperationHelper< T, U >::value, typename _BitXorOperationHelper< T, U >::type >::type
按位异或运算
Definition Property.h:1333
auto operator<<(U &&value) const -> typename std::enable_if< _ShlOperationHelper< T, U >::value, typename _ShlOperationHelper< T, U >::type >::type
左移运算
Definition Property.h:1353
auto operator<<=(const PropertyBase< U, D > &prop) -> typename std::enable_if< _ShlOperationHelper< T, U >::value, TDerived & >::type
左移赋值运算
Definition Property.h:935
auto operator!=(U &&value) const -> typename std::enable_if< _EqOperationHelper< T, U >::value, typename _EqOperationHelper< T, U >::type >::type
不等于运算
Definition Property.h:1192
auto operator->() const
取属性字段
Definition Property.h:461
auto operator&&(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _LogicAndOperationHelper< T, U >::value, typename _LogicAndOperationHelper< T, U >::type >::type
逻辑与运算
Definition Property.h:1403
auto operator|=(U &&value) -> typename std::enable_if< _BitOrOperationHelper< T, U >::value, TDerived & >::type
按位或赋值运算
Definition Property.h:825
auto operator<<=(U &&value) const -> typename std::enable_if< _ShlOperationHelper< T, U >::value, const TDerived & >::type
左移赋值运算
Definition Property.h:924
auto operator&=(const PropertyBase< U, D > &prop) -> typename std::enable_if< _BitAndOperationHelper< T, U >::value, TDerived & >::type
按位与赋值运算
Definition Property.h:803
auto operator%(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _ModOperationHelper< T, U >::value, typename _ModOperationHelper< T, U >::type >::type
取模运算
Definition Property.h:1161
auto operator+=(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _AddOperationHelper< T, U >::value, const TDerived & >::type
加赋值运算
Definition Property.h:570
auto operator*() const -> typename std::enable_if< _DerefOperationHelper< U >::value &&!std::is_reference< typename _DerefOperationHelper< U >::type >::value, typename _DerefOperationHelper< U >::type >::type
解引用运算
Definition Property.h:1024
auto operator+=(U &&value) -> typename std::enable_if< _AddOperationHelper< T, U >::value, TDerived & >::type
加赋值运算
Definition Property.h:537
auto operator&(U &&value) const -> typename std::enable_if< _BitAndOperationHelper< T, U >::value, typename _BitAndOperationHelper< T, U >::type >::type
按位与运算
Definition Property.h:1293
auto operator|=(U &&value) const -> typename std::enable_if< _BitOrOperationHelper< T, U >::value, const TDerived & >::type
按位或赋值运算
Definition Property.h:836
auto operator<<=(U &&value) -> typename std::enable_if< _ShlOperationHelper< T, U >::value, TDerived & >::type
左移赋值运算
Definition Property.h:913
auto operator+=(U &&value) const -> typename std::enable_if< _AddOperationHelper< T, U >::value, const TDerived & >::type
加赋值运算
Definition Property.h:548
auto operator-=(U &&value) const -> typename std::enable_if< _SubOperationHelper< T, U >::value, const TDerived & >::type
减赋值运算
Definition Property.h:592
auto operator*() const -> typename std::enable_if< _DerefOperationHelper< U >::value &&std::is_pointer< T >::value, typename _DerefOperationHelper< U >::type >::type
指针解引用运算
Definition Property.h:1039
FieldsAccessor< T > AccessFields() const
访问属性字段,可由子类重写
Definition Property.h:437
auto operator<=(U &&value) const -> typename std::enable_if< _LeOperationHelper< T, U >::value, typename _LeOperationHelper< T, U >::type >::type
小于等于运算
Definition Property.h:1233
void(*)() TFuncPtr
用于存储任意签名函数指针的通用类型
Definition Property.h:1495
auto operator>>=(const PropertyBase< U, D > &prop) -> typename std::enable_if< _ShrOperationHelper< T, U >::value, TDerived & >::type
右移赋值运算
Definition Property.h:979
auto operator!() const -> typename std::enable_if< _LogicNotOperationHelper< U >::value, typename _LogicNotOperationHelper< U >::type >::type
逻辑非运算
Definition Property.h:1001
auto operator*=(U &&value) -> typename std::enable_if< _MulOperationHelper< T, U >::value, TDerived & >::type
乘赋值运算
Definition Property.h:625
void * GetOwner() const noexcept
获取属性所有者对象,当属性为静态属性时返回nullptr
Definition Property.h:1531
auto operator>>=(U &&value) -> typename std::enable_if< _ShrOperationHelper< T, U >::value, TDerived & >::type
右移赋值运算
Definition Property.h:957
auto operator^=(const PropertyBase< U, D > &prop) -> typename std::enable_if< _BitXorOperationHelper< T, U >::value, TDerived & >::type
按位异或赋值运算
Definition Property.h:891
TDerived & operator=(TSetterParam value)
设置属性值
Definition Property.h:500
auto operator-=(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _SubOperationHelper< T, U >::value, const TDerived & >::type
减赋值运算
Definition Property.h:614
auto operator/=(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _DivOperationHelper< T, U >::value, const TDerived & >::type
除赋值运算
Definition Property.h:702
auto operator*=(U &&value) const -> typename std::enable_if< _MulOperationHelper< T, U >::value, const TDerived & >::type
乘赋值运算
Definition Property.h:636
auto operator/(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _DivOperationHelper< T, U >::value, typename _DivOperationHelper< T, U >::type >::type
除法运算
Definition Property.h:1141
auto operator^(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _BitXorOperationHelper< T, U >::value, typename _BitXorOperationHelper< T, U >::type >::type
按位异或运算
Definition Property.h:1343
auto operator*=(const PropertyBase< U, D > &prop) -> typename std::enable_if< _MulOperationHelper< T, U >::value, TDerived & >::type
乘赋值运算
Definition Property.h:647
auto operator>>(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _ShrOperationHelper< T, U >::value, typename _ShrOperationHelper< T, U >::type >::type
右移运算
Definition Property.h:1383
auto operator+() const -> typename std::enable_if< _UnaryPlusOperationHelper< U >::value, typename _UnaryPlusOperationHelper< U >::type >::type
正号运算
Definition Property.h:1051
auto operator<(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _LtOperationHelper< T, U >::value, typename _LtOperationHelper< T, U >::type >::type
小于运算
Definition Property.h:1223
auto operator^=(U &&value) const -> typename std::enable_if< _BitXorOperationHelper< T, U >::value, const TDerived & >::type
按位异或赋值运算
Definition Property.h:880
auto operator>=(const PropertyBase< U, D > &prop) const -> typename std::enable_if< _GeOperationHelper< T, U >::value, typename _GeOperationHelper< T, U >::type >::type
大于等于运算
Definition Property.h:1283
属性
Definition Property.h:1751
T GetterImpl() const
获取属性值
Definition Property.h:1810
void SetterImpl(TSetterParam value) const
设置属性值
Definition Property.h:1822
Property(const MemberPropertyInitializer< TOwner, T > &initializer)
构造成员属性
Definition Property.h:1783
Property(const StaticPropertyInitializer< T > &initializer)
构造静态属性
Definition Property.h:1797
只读属性
Definition Property.h:1837
ReadOnlyProperty(const StaticPropertyInitializer< T > &initializer)
构造静态属性
Definition Property.h:1869
ReadOnlyProperty(const MemberPropertyInitializer< TOwner, T > &initializer)
构造成员属性
Definition Property.h:1857
T GetterImpl() const
获取属性值
Definition Property.h:1880
静态属性初始化器
Definition Property.h:365
StaticPropertyInitializer()
构造静态属性初始化器
Definition Property.h:385
StaticPropertyInitializer & Setter(void(*setter)(_PropertySetterParamType< TValue >))
设置setter
Definition Property.h:402
StaticPropertyInitializer & Getter(TValue(*getter)())
设置getter
Definition Property.h:393
只写属性
Definition Property.h:1895
void SetterImpl(TSetterParam value) const
设置属性值
Definition Property.h:1943
WriteOnlyProperty(const MemberPropertyInitializer< TOwner, T > &initializer)
构造成员属性
Definition Property.h:1920
WriteOnlyProperty(const StaticPropertyInitializer< T > &initializer)
构造静态属性
Definition Property.h:1932
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition Alignment.h:4
auto operator&&(T &&left, const PropertyBase< U, D > &right) -> typename std::enable_if<!_IsProperty< T >::value &&_LogicAndOperationHelper< T, U >::value, typename _LogicAndOperationHelper< T, U >::type >::type
逻辑与运算
Definition Property.h:1728
auto operator<<(T &&left, const PropertyBase< U, D > &right) -> typename std::enable_if<!_IsProperty< T >::value &&_ShlOperationHelper< T, U >::value, typename _ShlOperationHelper< T, U >::type >::type
左移运算
Definition Property.h:1708
auto operator>(T &&left, const PropertyBase< U, D > &right) -> typename std::enable_if<!_IsProperty< T >::value &&_GtOperationHelper< T, U >::value, typename _GtOperationHelper< T, U >::type >::type
大于运算
Definition Property.h:1658
bool operator==(std::nullptr_t, const Delegate< TRet(Args...)> &d) noexcept
比较委托和nullptr
Definition Delegate.h:1094
auto operator+(T &&left, const PropertyBase< U, D > &right) -> typename std::enable_if<!_IsProperty< T >::value &&_AddOperationHelper< T, U >::value, typename _AddOperationHelper< T, U >::type >::type
加法运算
Definition Property.h:1567
auto operator<(T &&left, const PropertyBase< U, D > &right) -> typename std::enable_if<!_IsProperty< T >::value &&_LtOperationHelper< T, U >::value, typename _LtOperationHelper< T, U >::type >::type
小于运算
Definition Property.h:1638
auto operator<=(T &&left, const PropertyBase< U, D > &right) -> typename std::enable_if<!_IsProperty< T >::value &&_LeOperationHelper< T, U >::value, typename _LeOperationHelper< T, U >::type >::type
小于等于运算
Definition Property.h:1648
auto operator*(T &&left, const PropertyBase< U, D > &right) -> typename std::enable_if<!_IsProperty< T >::value &&_MulOperationHelper< T, U >::value, typename _MulOperationHelper< T, U >::type >::type
乘法运算
Definition Property.h:1587
constexpr auto operator&(T a, T b) -> typename std::enable_if< std::is_enum< T >::value &&_EnumSupportBitOperations< T >::value, T >::type
为标记_EnumSupportBitOperations的枚举类型提供按位与运算
Definition EnumBit.h:44
auto operator||(T &&left, const PropertyBase< U, D > &right) -> typename std::enable_if<!_IsProperty< T >::value &&_LogicOrOperationHelper< T, U >::value, typename _LogicOrOperationHelper< T, U >::type >::type
逻辑或运算
Definition Property.h:1738
constexpr auto operator^(T a, T b) -> typename std::enable_if< std::is_enum< T >::value &&_EnumSupportBitOperations< T >::value, T >::type
为标记_EnumSupportBitOperations的枚举类型提供按位异或运算
Definition EnumBit.h:65
constexpr auto operator|(T a, T b) -> typename std::enable_if< std::is_enum< T >::value &&_EnumSupportBitOperations< T >::value, T >::type
为标记_EnumSupportBitOperations的枚举类型提供按位或运算
Definition EnumBit.h:23
bool operator!=(std::nullptr_t, const Delegate< TRet(Args...)> &d) noexcept
比较委托和nullptr
Definition Delegate.h:1104
auto operator>=(T &&left, const PropertyBase< U, D > &right) -> typename std::enable_if<!_IsProperty< T >::value &&_GeOperationHelper< T, U >::value, typename _GeOperationHelper< T, U >::type >::type
大于等于运算
Definition Property.h:1668
auto operator%(T &&left, const PropertyBase< U, D > &right) -> typename std::enable_if<!_IsProperty< T >::value &&_ModOperationHelper< T, U >::value, typename _ModOperationHelper< T, U >::type >::type
取模运算
Definition Property.h:1607
auto operator/(T &&left, const PropertyBase< U, D > &right) -> typename std::enable_if<!_IsProperty< T >::value &&_DivOperationHelper< T, U >::value, typename _DivOperationHelper< T, U >::type >::type
除法运算
Definition Property.h:1597
auto operator>>(T &&left, const PropertyBase< U, D > &right) -> typename std::enable_if<!_IsProperty< T >::value &&_ShrOperationHelper< T, U >::value, typename _ShrOperationHelper< T, U >::type >::type
右移运算
Definition Property.h:1718
auto operator-(T &&left, const PropertyBase< U, D > &right) -> typename std::enable_if<!_IsProperty< T >::value &&_SubOperationHelper< T, U >::value, typename _SubOperationHelper< T, U >::type >::type
减法运算
Definition Property.h:1577
字段访问器,用于实现使用operator->取属性字段
Definition Property.h:188
auto operator->() -> typename std::enable_if<!std::is_pointer< U >::value &&_HasArrowOperator< U >::value, typename _HasArrowOperator< U >::type >::type
非指针类型,且有operator->,转发operator->
Definition Property.h:227
T value
字段访问器所维护的值
Definition Property.h:192
auto operator->() -> typename std::enable_if< std::is_pointer< U >::value, U >::type
指针类型,直接返回值
Definition Property.h:207
FieldsAccessor(Args &&...args)
构造字段访问器
Definition Property.h:198
auto operator->() -> typename std::enable_if<!std::is_pointer< U >::value &&!_HasArrowOperator< U >::value, U * >::type
非指针类型,且无operator->,返回值的地址
Definition Property.h:217
判断类型是否可以使用[]操作符的辅助模板
Definition Property.h:148
判断类型是否有operator->的辅助模板
Definition Property.h:164
判断类型是否有GetterImpl成员的辅助模板
Definition Property.h:102
判断类型是否有SetterImpl成员的辅助模板
Definition Property.h:117
判断类型是否可以显式转换的辅助模板
Definition Internal.h:19
_IsProperty的实现
Definition Property.h:81
判断类型是否为属性的辅助模板
Definition Property.h:95
判断类型是否为可读属性的辅助模板
Definition Property.h:133
判断类型是否为可写属性的辅助模板
Definition Property.h:141