Fixes #3974 by using the standard-compliant `#ifndef #define #endif` pattern instead of `#pragma once`.
35 lines
1.0 KiB
C++
35 lines
1.0 KiB
C++
#ifndef INCLUDE_NLOHMANN_DETAIL_JSON_CUSTOM_BASE_CLASS_HPP
|
|
#define INCLUDE_NLOHMANN_DETAIL_JSON_CUSTOM_BASE_CLASS_HPP
|
|
|
|
#include <type_traits> // conditional, is_same
|
|
|
|
#include <nlohmann/detail/abi_macros.hpp>
|
|
|
|
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<class T>
|
|
using json_base_class = typename std::conditional <
|
|
std::is_same<T, void>::value,
|
|
json_default_base,
|
|
T
|
|
>::type;
|
|
|
|
} // namespace detail
|
|
NLOHMANN_JSON_NAMESPACE_END
|
|
|
|
#endif // INCLUDE_NLOHMANN_DETAIL_JSON_CUSTOM_BASE_CLASS_HPP
|