Changeset View
Changeset View
Standalone View
Standalone View
src/optional.h
// Copyright (c) 2017 The Bitcoin Core developers | // Copyright (c) 2017 The Bitcoin Core developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#ifndef BITCOIN_OPTIONAL_H | #ifndef BITCOIN_OPTIONAL_H | ||||
#define BITCOIN_OPTIONAL_H | #define BITCOIN_OPTIONAL_H | ||||
#include <utility> | |||||
#include <boost/optional.hpp> | #include <boost/optional.hpp> | ||||
//! Substitute for C++17 std::optional | //! Substitute for C++17 std::optional | ||||
template <typename T> using Optional = boost::optional<T>; | template <typename T> using Optional = boost::optional<T>; | ||||
//! Substitute for C++17 std::make_optional | |||||
template <typename T> Optional<T> MakeOptional(bool condition, T &&value) { | |||||
return boost::make_optional(condition, std::forward<T>(value)); | |||||
} | |||||
//! Substitute for C++17 std::nullopt | //! Substitute for C++17 std::nullopt | ||||
static auto &nullopt = boost::none; | static auto &nullopt = boost::none; | ||||
#endif // BITCOIN_OPTIONAL_H | #endif // BITCOIN_OPTIONAL_H |