• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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