Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

boost/math/tools/array.hpp

//  Copyright (c) 2024 Matt Borland
//  Use, modification and distribution are subject to the
//  Boost Software License, Version 1.0. (See accompanying file
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
//  Regular use of std::array functions can not be used on 
//  GPU platforms like CUDA since they are missing the __device__ marker
//  Alias as needed to get correct support

#ifndef BOOST_MATH_TOOLS_ARRAY_HPP
#define BOOST_MATH_TOOLS_ARRAY_HPP

#include <boost/math/tools/config.hpp>

#ifdef BOOST_MATH_ENABLE_CUDA

#include <cuda/std/array>

namespace boost {
namespace math {

using cuda::std::array;

} // namespace math
} // namespace boost

#else

#include <array>

namespace boost {
namespace math {

using std::array;

} // namespace math
} // namespace boost

#endif // BOOST_MATH_ENABLE_CUDA

#endif // BOOST_MATH_TOOLS_ARRAY_HPP