去除所有访问级别
This commit is contained in:
@@ -25,11 +25,27 @@ struct Property_Descriptor {
|
||||
using value_type = typename Accessor::value_type;
|
||||
using storage_identity = typename Accessor::storage_identity;
|
||||
using attribute_types = Type_List<Attributes...>;
|
||||
static constexpr bool readable = Accessor::readable;
|
||||
static constexpr bool writable = Accessor::writable;
|
||||
using capability_type = find_attribute_in_list_t<Capability_Category, attribute_types>;
|
||||
static constexpr Property_Capability intrinsic_capability = [] {
|
||||
if constexpr (!std::same_as<capability_type, void>) {
|
||||
return capability_type::value;
|
||||
} else if constexpr (Accessor::readable && Accessor::writable) {
|
||||
return Property_Capability::read_write;
|
||||
} else if constexpr (Accessor::readable) {
|
||||
return Property_Capability::read;
|
||||
} else if constexpr (Accessor::writable) {
|
||||
return Property_Capability::write;
|
||||
} else {
|
||||
return Property_Capability::none;
|
||||
}
|
||||
}();
|
||||
static constexpr bool readable = Accessor::readable && (intrinsic_capability == Property_Capability::read || intrinsic_capability == Property_Capability::read_write);
|
||||
static constexpr bool writable = Accessor::writable && (intrinsic_capability == Property_Capability::write || intrinsic_capability == Property_Capability::read_write);
|
||||
static constexpr bool synchronized_view_read = Accessor::synchronized_view_read;
|
||||
static constexpr bool trusted_object_access = Accessor::trusted_object_access;
|
||||
static_assert(unique_single_value_categories<Attributes...>());
|
||||
static_assert(!((intrinsic_capability == Property_Capability::read || intrinsic_capability == Property_Capability::read_write) && !Accessor::readable), "property capability requests read from a non-readable accessor");
|
||||
static_assert(!((intrinsic_capability == Property_Capability::write || intrinsic_capability == Property_Capability::read_write) && !Accessor::writable), "property capability requests write from a non-writable accessor");
|
||||
using key_type = find_attribute_in_list_t<Key_Category, attribute_types>;
|
||||
static_assert(!std::same_as<key_type, void>);
|
||||
static_assert(key_type::value.view().size() > 0);
|
||||
|
||||
Reference in New Issue
Block a user