20 namespace protocol_buffers
33 using value_type =
typename T::value_type;
34 using reference_type =
35 typename std::conditional <
36 std::is_scalar <value_type>::value,
45 : p_tValue {std::move(value)},
55 template <
typename... Args>
57 : default_optional_value (
58 std::forward <std::tuple <Args...>> (args),
59 static_cast <
make_indices <
sizeof... (Args)>*> (
nullptr))
64 template <
typename... Args,
typename... Indices>
66 : p_tValue{std::forward <Args> (std::get <Indices::value> (args))...},
73 reference_type
get ()
const
79 void set (value_type value)
82 p_tValue = std::move(value);
99 ~default_optional_value () =
default;
102 value_type p_tValue {};
112 typename Specification,
116 std::integral_constant <e_field_type, e_field_type::optional>,
117 std::integral_constant <uint32_t, Number>>,
119 protocol_buffer_implementation_wrapper <
121 std::integral_constant <uint32_t, Number>,
131 #include <framework/protocol_buffers/optional.inl>