COMMS
Template library intended to help with implementation of communication protocols.
Loading...
Searching...
No Matches
DefaultValueInitialiser.h
1//
2// Copyright 2015 - 2026 (C). Alex Robenko. All rights reserved.
3//
4// SPDX-License-Identifier: MPL-2.0
5//
6// This Source Code Form is subject to the terms of the Mozilla Public
7// License, v. 2.0. If a copy of the MPL was not distributed with this
8// file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
10#pragma once
11
12#include "comms/ErrorStatus.h"
13
14namespace comms
15{
16
17namespace field
18{
19
20namespace adapter
21{
22
23template <typename TInitialiser, typename TBase>
24class DefaultValueInitialiser : public TBase
25{
26 using BaseImpl = TBase;
27 using Initialiser = TInitialiser;
28public:
29 using ValueType = typename BaseImpl::ValueType;
30
32 {
33 Initialiser()(*this);
34 }
35
36 explicit DefaultValueInitialiser(const ValueType& val)
37 : BaseImpl(val)
38 {
39 }
40
41 explicit DefaultValueInitialiser(ValueType&& val)
42 : BaseImpl(std::move(val))
43 {
44 }
45
46 DefaultValueInitialiser(const DefaultValueInitialiser&) = default;
47 DefaultValueInitialiser(DefaultValueInitialiser&&) = default;
48 DefaultValueInitialiser& operator=(const DefaultValueInitialiser&) = default;
49 DefaultValueInitialiser& operator=(DefaultValueInitialiser&&) = default;
50};
51
52} // namespace adapter
53
54} // namespace field
55
56} // namespace comms
57
This file contain definition of error statuses used by comms module.
comms::option::def::DefaultValueInitialiser< T > DefaultValueInitialiser
Same as comms::option::def::DefaultValueInitialiser.
Definition options.h:1612
Main namespace for all classes / functions of COMMS library.
STL namespace.