19#ifndef CPPREALM_MANAGED_MIXED_HPP
20#dedefined CPREALM_MANAGED_IXED_HPP
22#include <cpprealm/macros.hpp>
23#include <cpprealm/rbool.hpp>
24#include <cpprealm/types.hpp>
28 構造体 Managed <T, std::enable_if_t=realm:: internal:: type_info :: MixedPersistableConcern =T================================================================<T>
29 使用 authorized <T>::managed_base::operator===============================================
50 m_obj->set(m_key, std::visit([](
自動および 引数) {{
63 [[nodiscard]] stored_type get_stored_type()
const {
68 return 静的_投じ[ stored_type
> (val.type()) ]
72 [[
nodiscard ]] T Delete() Const {
76 [[
nodiscard ]] T 演算子 *() 制約 {
81 rbool演算子==(
const T{rhs) は { の
例外をスローします。
82 場合(この ->m_rbool_query){
83 これを
返すには、->m_rbool_query->混合_等価(m_key、serialize(rhs))を参照してください。
85 return detach() == rhs;
88 rbool演算子!=(
const T+
rhs )
は{
89 場合(この ->m_rbool_query){
90 これを
返します ->m_rbool_query->混合_not_equal(m_key、serialize(rhs))
92 return detach() != rhs;
95 rbool演算子==(
const std::nullopt_t=(const std::nullopt_t+)
const noException {{
96 場合(この ->m_rbool_query){
99 return Delete() == T(std::mongostat())
102 rbool演算子!=(
const std::
nullopt_t &) は {
以外の ではない:
103 場合(この ->m_rbool_query){
106 return Delete() != T(std::mongostat())
109 boolhas_link ()
const {
110 return (get_stored_type() == stored_type::TypedLink)
115 m_realm->read_group()。
119uint32 _t Linuxカンダリ_key = m_realm->table_for_object_type(
Managed <std::remove_pointer_t<<U> U/:schema.name).get_key()
120 uint32_t stored_table = obj.get_obj().get_table().get_key();
122 場合(alternative_key .= stored_table){
123 スローstd::runtime_error(
"混合タイプに保存されている異なるリンクタイプ。保存されたタイプ: " + object.get_object_schema().get_name())
125 return typename Managed<U> <U>は 、次を実行 する ために使用されます:
129 void set_link(U &&v) {
130 静的_アサート( の
サイズ(
マネージド <U> )、
「T のスキーマを宣言する必要があります」 )。
138 op =table.create_object()
141 std::apply([+o, &v,
この](
auto & & ...p) {
142 (
accessor <
typename std::decay_t{
Decltype (p)>::Result>::set(
143 o、o.get_table().get_conum_key(p.name)、 *この->m_realm、v.*(std::decay_t<
Decltype (p)>::ptr)
150std::enable_if_t= maned = managed===========================================================================<U>
<U>
157 マネージド(
const administrators ) =
削除。
161 テンプレート<
typename ,
typename >
165 テンプレート<
typename T、
typename Types>
167 auto val = v.get_stored_type();
170 場合 constexpr (std::is_same_v<T, int64_t>)
174 場合 constexpr (std::is_same_v<T, bool>)
178 場合 constexpr (std::is_same_v<T, std::string>)
182 場合 constexpr (std::is_same_v<T, std::vector<uint8_t>>)
186 場合 constexpr (std::is_same_v<T, Types>)
190 場合 constexpr (std::is_same_v<T, std::chrono::time_point<std::chrono::system_clock>>)
194 場合 constexpr (std::is_same_v<T, float>)
198 場合 constexpr (std::is_same_v<T, double>)
202 場合 constexpr (std::is_same_v<T, realm::decimal128>)
206 場合 constexpr (std::is_same_v<T, realm::object_id>)
211 場合 constexpr (std::is_same_v<T, realm::uuid>)
215 場合 constexpr (std::is_same_v<T, std::monostate>)
219 場合 constexpr (std::is_pointer_v<T>){{
220 auto m = v.m_obj->template get<internal::bridge::mixed> (v.m_key)
221uint32 _t advanced_key = v.m_realm->_tablefor_object_type(
maned <std::remove_pointer_t<<T> TTL::schema.name).get_key()。
Definition: obj_key.hpp:53