#pragma once #include // conditional, is_same #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /*! @brief Default base class of the @ref basic_json class. So that the correct implementations of the copy / move ctors / assign operators of @ref basic_json do not require complex case distinctions (no base class / custom base class used as customization point), @ref basic_json always has a base class. By default, this class is used because it is empty and thus has no effect on the behavior of @ref basic_json. */ struct json_default_base {}; template using json_base_class = typename std::conditional < std::is_same::value, json_default_base, T >::type; } // namespace detail NLOHMANN_JSON_NAMESPACE_END