ara::core::Optional
It’s a wrapper for other types and a flag that indicates if the value is initialized or not.
struct ConfigurationParameters {
std::string mandatoryParameter_1;
int32_t mandatoryParameter_2;
ara::core::Optional<std::string> optionalParameter_1;
ara::core::Optional<int32_t> optionalParameter_2;
};
...
void processConfig(ConfigurationParameters& cfg) {
// Process mandatory parameters as usual
auto param1Value = cfg.mandatoryParameter_1;
// use param1Value
// for optional parameters first check their existence
if(cfg.optionalParameter_1.has_value()) {
// use optional parameter
auto optionalParam = cfg.optionalParameter_1.value();
}
}
- Parameters
U
the type of element in the container
class ara::core::Optional
A container with at most one element The class template ara::core::Optional manages optional values, i.e. values that may or may not be present. The existence can be evaluated during both compile-time and runtime.
Members
public inline constexpr
Optional
() noexcept
Default constructor.
public inline constexpr
Optional
(
nullopt_t
) noexcept
Construct empty optional from nullopt.
public constexpr
Optional
(
Optional
const & v) = default
Copy construct from another Optional.
public constexpr
Optional
(
Optional
&& v) = default
Move value from another Optional.
public template<>
inline constexpr explicit
Optional
(in_place_t, Args &&... args) noexcept
Internal In place constructor.
- Parameters
Args
arguments forwarded for inplace construction
public template<>
inline constexpr explicit
Optional
(in_place_t, std::initializer_list< T > il, Args &&... args) noexcept
Internal In place constructor.
- Parameters
T
In place constructor typeArgs
arguments forwarded for inplace construction
public inline
Optional
(U const & v) noexcept
Construct a new Optional object using provided value.
- Parameters
v
initial value
public inline
Optional
(U && v) noexcept
Construct a new Optional object by moving the value.
- Parameters
v
initial value
public
~Optional
() = default
Destroy the Optional object.
public
Optional
&
operator=
(const
Optional
& rhs) = default
Assignment operator. Please refer to C++17 documentation for more details.
-
Parameters
rhs
source Optional object from where value is assigned
-
Returns Optional& reference to this object
public
Optional
&
operator=
(
Optional
&& rhs) = default
Assignment operator. Please refer to C++17 documentation for more details.
-
Parameters
rhs
source Optional object from where value is assigned
-
Returns Optional& reference to this object
public inline
Optional
&
operator=
(
nullopt_t
) noexcept
Remove any value contained in this Optional object. If no value is contained, then don't have any effect.
- Returns Optional& reference to this object
public template<>
inline U &
emplace
(Args &&... args) noexcept
Create the value in place and set it as the value for this Optional object. Please refer to C++17 documentation for more details.
-
Parameters
args
arguments which are used to construct the value in place
-
Returns U& reference to the new value
public inline constexpr const U *
operator->
() const
Return a pointer to the contained value Please refer to C++17 documentation for more details.
- Returns constexpr const U* Pointer to the contained value
public inline constexpr U *
operator->
()
Return a pointer to the contained value Please refer to C++17 documentation for more details.
- Returns constexpr const U* Pointer to the contained value
public inline constexpr U &
operator*
()
Return a reference to the contained value Please refer to C++17 documentation for more details.
- Returns constexpr const U* Reference to the contained value
public inline constexpr const U &
operator*
() const
Return a reference to the contained value Please refer to C++17 documentation for more details.
- Returns constexpr const U* Reference to the contained value
public inline constexpr bool
has_value
() const noexcept
Check whether the object contain any value.
-
Returns true if the object contain value
-
Returns false if the object doesn't contain value.
public inline constexpr explicit
operator bool
() const noexcept
Check whether the object contain any value.
-
Returns true if the object contain value
-
Returns false if the object doesn't contain value.
public inline U &
value
()
Return a reference to the value, if this Optional contain a value. Otherwise throw bad_optional_access exception.
- Returns U&
public inline const U &
value
() const
Return a reference to the value, if this Optional contain a value. Otherwise throw bad_optional_access exception.
- Returns U&
public template<>
inline constexpr U
value_or
(T && t) const
Return the value if this Optional contain a value, otherwise return the provided value of 't'.
-
Parameters
T
type of t
-
Parameters
t
default value to return if the Optional does not contain any value
-
Returns constexpr U
public template<>
inline constexpr U
value_or
(T && t)
Return the value if this Optional contain a value, otherwise return the provided value of 't'.
-
Parameters
T
type of t
-
Parameters
t
default value to return if the Optional does not contain any value
-
Returns constexpr U
public inline void
reset
() noexcept
Discard any value contained in this Optional object. Please refer to C++17 documentation for more details.
typedef
value_type
the type of element in the container