1*7860f970SSlava Zakharin //===-- include/flang/Common/variant.h --------------------------*- C++ -*-===// 2*7860f970SSlava Zakharin // 3*7860f970SSlava Zakharin // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*7860f970SSlava Zakharin // See https://llvm.org/LICENSE.txt for license information. 5*7860f970SSlava Zakharin // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*7860f970SSlava Zakharin // 7*7860f970SSlava Zakharin //===----------------------------------------------------------------------===// 8*7860f970SSlava Zakharin 9*7860f970SSlava Zakharin // A single way to expose C++ variant class in files that can be used 10*7860f970SSlava Zakharin // in F18 runtime build. With inclusion of this file std::variant 11*7860f970SSlava Zakharin // and the related names become available, though, they may correspond 12*7860f970SSlava Zakharin // to alternative definitions (e.g. from cuda::std namespace). 13*7860f970SSlava Zakharin 14*7860f970SSlava Zakharin #ifndef FORTRAN_COMMON_VARIANT_H 15*7860f970SSlava Zakharin #define FORTRAN_COMMON_VARIANT_H 16*7860f970SSlava Zakharin 17*7860f970SSlava Zakharin #if RT_USE_LIBCUDACXX 18*7860f970SSlava Zakharin #include <cuda/std/variant> 19*7860f970SSlava Zakharin namespace std { 20*7860f970SSlava Zakharin using cuda::std::get; 21*7860f970SSlava Zakharin using cuda::std::monostate; 22*7860f970SSlava Zakharin using cuda::std::variant; 23*7860f970SSlava Zakharin using cuda::std::variant_size_v; 24*7860f970SSlava Zakharin using cuda::std::visit; 25*7860f970SSlava Zakharin } // namespace std 26*7860f970SSlava Zakharin #else // !RT_USE_LIBCUDACXX 27*7860f970SSlava Zakharin #include <variant> 28*7860f970SSlava Zakharin #endif // !RT_USE_LIBCUDACXX 29*7860f970SSlava Zakharin 30*7860f970SSlava Zakharin #endif // FORTRAN_COMMON_VARIANT_H 31