1 // __ _____ _____ _____ 2 // __| | __| | | | JSON for Modern C++ 3 // | | |__ | | | | | | version 3.11.3 4 // |_____|_____|_____|_|___| https://github.com/nlohmann/json 5 // 6 // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> 7 // SPDX-License-Identifier: MIT 8 9 #pragma once 10 11 #include <type_traits> // conditional, is_same 12 13 #include <nlohmann/detail/abi_macros.hpp> 14 15 NLOHMANN_JSON_NAMESPACE_BEGIN 16 namespace detail 17 { 18 19 /*! 20 @brief Default base class of the @ref basic_json class. 21 22 So that the correct implementations of the copy / move ctors / assign operators 23 of @ref basic_json do not require complex case distinctions 24 (no base class / custom base class used as customization point), 25 @ref basic_json always has a base class. 26 By default, this class is used because it is empty and thus has no effect 27 on the behavior of @ref basic_json. 28 */ 29 struct json_default_base {}; 30 31 template<class T> 32 using json_base_class = typename std::conditional < 33 std::is_same<T, void>::value, 34 json_default_base, 35 T 36 >::type; 37 38 } // namespace detail 39 NLOHMANN_JSON_NAMESPACE_END 40