NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.3: NDN, CCN, CCNx, content centric networks
API Documentation
backports-optional.hpp File Reference

Copyright (c) 2013-2016 Regents of the University of California. More...

#include "../common.hpp"
#include <boost/none.hpp>
#include <boost/optional.hpp>
#include <boost/utility/typed_in_place_factory.hpp>
Include dependency graph for backports-optional.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  ndn::optional< T >
 
struct  ndn::in_place_t
 
class  ndn::nullopt_t
 
class  ndn::bad_optional_access
 
class  ndn::optional< T >
 

Namespaces

 ndn
 Copyright (c) 2011-2015 Regents of the University of California.
 

Functions

constexpr nullopt_t ndn::nullopt (0)
 
template<typename T >
constexpr bool ndn::operator== (const optional< T > &lhs, const optional< T > &rhs)
 
template<typename T >
constexpr bool ndn::operator!= (const optional< T > &lhs, const optional< T > &rhs)
 
template<typename T >
constexpr bool ndn::operator< (const optional< T > &lhs, const optional< T > &rhs)
 
template<typename T >
constexpr bool ndn::operator<= (const optional< T > &lhs, const optional< T > &rhs)
 
template<typename T >
constexpr bool ndn::operator> (const optional< T > &lhs, const optional< T > &rhs)
 
template<typename T >
constexpr bool ndn::operator>= (const optional< T > &lhs, const optional< T > &rhs)
 
template<typename T >
constexpr optional< typename std::decay< T >::type > ndn::make_optional (T &&value)
 
template<typename T , typename... Args>
constexpr optional< T > ndn::make_optional (Args &&... args)
 

Variables

constexpr in_place_t ndn::in_place {}
 

Detailed Description

Copyright (c) 2013-2016 Regents of the University of California.

This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).

ndn-cxx library is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received copies of the GNU General Public License and GNU Lesser General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see http://www.gnu.org/licenses/.

See AUTHORS.md for complete list of ndn-cxx authors and contributors. C++17 std::optional backport implemented using boost::optional

See also
http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/n4594.pdf section 20.6
http://en.cppreference.com/w/cpp/utility/optional

Differences from C++17 include:

  • No constructor and operator= taking a T&&, because boost::optional lacks a move constructor as of Boost 1.54
  • No constructor, operator=, emplace, and make_optional with std::initializer_list
  • In-place constructor and emplace require copyable arguments, because boost::in_place requires such
  • Move constructor may or may not exist (it's implicitly defined when available), because boost::optional lacks a move constructor as of Boost 1.54
  • Non-const operator-> and operator* are not constexpr
  • value() is not constexpr
  • swap is declared without noexcept specification
  • No comparison operators with const T& or nullopt_t
  • No specialized std::hash support

Definition in file backports-optional.hpp.