29#ifndef NDN_CXX_DETAIL_COMMON_HPP
30#define NDN_CXX_DETAIL_COMMON_HPP
32#include "ndn-cxx/detail/config.hpp"
35#if __cplusplus < 201703L
36#error "ndn-cxx applications must be compiled using the C++17 standard (-std=c++17)"
41#ifdef NDN_CXX_WITH_TESTS
42#define NDN_CXX_VIRTUAL_WITH_TESTS virtual
43#define NDN_CXX_PUBLIC_WITH_TESTS_ELSE_PROTECTED public
44#define NDN_CXX_PUBLIC_WITH_TESTS_ELSE_PRIVATE public
45#define NDN_CXX_PROTECTED_WITH_TESTS_ELSE_PRIVATE protected
47#define NDN_CXX_VIRTUAL_WITH_TESTS
48#define NDN_CXX_PUBLIC_WITH_TESTS_ELSE_PROTECTED protected
49#define NDN_CXX_PUBLIC_WITH_TESTS_ELSE_PRIVATE private
50#define NDN_CXX_PROTECTED_WITH_TESTS_ELSE_PRIVATE private
69using std::make_shared;
70using std::make_unique;
73using namespace std::string_literals;
74using namespace std::string_view_literals;
78using namespace std::placeholders;
80#include <boost/version.hpp>
84#if BOOST_VERSION < 107600
85#define BOOST_BIND_NO_PLACEHOLDERS
86#include <boost/is_placeholder.hpp>
88#define NDN_CXX_SPECIALIZE_BOOST_IS_PLACEHOLDER_FOR_STD_PLACEHOLDER(N) \
90 struct is_placeholder<std::remove_const_t<decltype(_##N)>> \
96NDN_CXX_SPECIALIZE_BOOST_IS_PLACEHOLDER_FOR_STD_PLACEHOLDER(1)
97NDN_CXX_SPECIALIZE_BOOST_IS_PLACEHOLDER_FOR_STD_PLACEHOLDER(2)
98NDN_CXX_SPECIALIZE_BOOST_IS_PLACEHOLDER_FOR_STD_PLACEHOLDER(3)
99NDN_CXX_SPECIALIZE_BOOST_IS_PLACEHOLDER_FOR_STD_PLACEHOLDER(4)
100NDN_CXX_SPECIALIZE_BOOST_IS_PLACEHOLDER_FOR_STD_PLACEHOLDER(5)
101NDN_CXX_SPECIALIZE_BOOST_IS_PLACEHOLDER_FOR_STD_PLACEHOLDER(6)
102NDN_CXX_SPECIALIZE_BOOST_IS_PLACEHOLDER_FOR_STD_PLACEHOLDER(7)
103NDN_CXX_SPECIALIZE_BOOST_IS_PLACEHOLDER_FOR_STD_PLACEHOLDER(8)
104NDN_CXX_SPECIALIZE_BOOST_IS_PLACEHOLDER_FOR_STD_PLACEHOLDER(9)
105#undef NDN_CXX_SPECIALIZE_BOOST_IS_PLACEHOLDER_FOR_STD_PLACEHOLDER
110#include <boost/assert.hpp>
111#include <boost/core/noncopyable.hpp>
114using boost::noncopyable;