Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:11:08

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
0008 
0009 #pragma once
0010 
0011 // This workaround does not work on libc++. To detect libc++, we include
0012 // one STL header and then check if _LIBCPP_VERSION is defined.
0013 
0014 #include <any>
0015 #include <type_traits>
0016 
0017 // only if clang and libstdc++
0018 #if !defined(_LIBCPP_VERSION) && defined(__clang__)
0019 
0020 // Workaround for building on clang+libstdc++
0021 // See https://gitlab.cern.ch/atlas/atlasexternals/merge_requests/563
0022 namespace std {
0023 template <>
0024 struct is_constructible<std::reference_wrapper<const std::any>,
0025                         const std::reference_wrapper<const std::any>&>
0026     : public true_type {};
0027 template <>
0028 struct is_constructible<std::reference_wrapper<const std::any>,
0029                         std::reference_wrapper<const std::any>&&>
0030     : public true_type {};
0031 template <>
0032 struct is_constructible<std::reference_wrapper<const std::any>,
0033                         std::reference_wrapper<const std::any>&>
0034     : public true_type {};
0035 template <>
0036 struct is_copy_constructible<std::reference_wrapper<const std::any>>
0037     : public true_type {};
0038 }  // namespace std
0039 
0040 #endif