Standard API
Standard Library Backports
C++ Standard versions include new language features and new library features. As the name implies, language features are new features of the language the require compiler support. Library features are simply new additions to the Standard Library that typically do not rely on new language features nor require compiler support and could conceivably be implemented in an older C++ Standard. Typically, library features are only available in the particular C++ Standard version (or newer) in which they were introduced, even if the library features do not depend on any particular language features.
In effort to make library features available to a broader set of users, the NVIDIA C++ Standard Library relaxes this restriction. libcu++ makes a best-effort to provide access to C++ Standard Library features in older C++ Standard versions than they were introduced. For example, the calendar functionality added to <chrono>
in C++20 is made available in C++14.
Feature availability:
- C++17 and C++20 features of
<chrono>
available in C++14:- calendar functionality, e.g.,
year
,month
,day
,year_month_day
- duration functions, e.g.,
floor
,ceil
,round
- Note: Timezone and clocks added in C++20 are not available
- calendar functionality, e.g.,
- C++17 features from
<type_traits>
available in C++14:- Convenience
_v
aliases such asis_same_v
void_t
- Trait operations:
conjunction
,negation
,disjunction
invoke_result
- Convenience
- C++20 constexpr
<complex>
is available in C++14.- all operation on complex are made constexpr if
is_constant_evaluated
is supported.
- all operation on complex are made constexpr if
- C++20
<concepts>
are available in C++14.- all standard concepts are available in C++14 and C++17. However, they need to be used similar to type traits as language concepts are not available.
- C++20
<span>
is mostly available in C++14.- With the exception of the range based constructors all features are available in C++14 and C++17. The range based constructors are emulated but not 100% equivalent.
- C++20 features of
<functional>
have been partially ported to C++17.bind_front
is available in C++17.
- C++23
<mdspan>
is available in C++17.- mdspan is feature complete in C++17 onwards.
- mdspan on msvc is only supported in C++20 and onwards.
Synchronization Library
Any Standard C++ header not listed below is omitted.
<cuda/std/atomic> | Atomic objects and operations (see also: Extended API). 1.0.0 / CUDA 10.2 |
<cuda/std/latch> | Single-phase asynchronous thread-coordination mechanism (see also: Extended API). 1.1.0 / CUDA 11.0 |
<cuda/std/barrier> | Multi-phase asynchronous thread-coordination mechanism (see also: Extended API). 1.1.0 / CUDA 11.0 |
<cuda/std/semaphore> | Primitives for constraining concurrent access (see also: Extended API). 1.1.0 / CUDA 11.0 |
Time Library
Any Standard C++ header not listed below is omitted.
*: Some of the Standard C++ facilities in this header are omitted, see the libcu++ Specifics for details.
<cuda/std/chrono> * | Times, dates, and clocks (see also: libcu++ Specifics). 1.1.0 / CUDA 11.0 (clocks, time points, and durations) 1.4.0 (calendars and dates) |
Numerics Library
Any Standard C++ header not listed below is omitted.
<cuda/std/complex> | Complex number type (see also: libcu++ Specifics). 1.4.0 |
<cuda/std/ccomplex> | C complex number arithmetic. 1.4.0 |
<cuda/std/ratio> | Compile-time rational arthimetic. 1.1.0 / CUDA 11.0 |
<cuda/std/cfloat> | Limits of floating point types. 1.0.0 / CUDA 10.2 |
<cuda/std/climits> | Limits of integral types. 1.0.0 / CUDA 10.2 |
<cuda/std/cstdint> | Fixed-width integer types. 1.0.0 / CUDA 10.2 |
Utility Library
Any Standard C++ header not listed below is omitted.
*: Some of the Standard C++ facilities in this header are omitted, see the libcu++ Specifics for details.
<cuda/std/type_traits> | Compile-time type introspection. 1.0.0 / CUDA 10.2 |
<cuda/std/tuple> * | Fixed-sized heterogeneous container (see also: libcu++ Specifics). 1.3.0 / CUDA 11.2 |
<cuda/std/functional> * | Function objects and function wrappers (see also: libcu++ Specifics). 1.1.0 / CUDA 11.0 (Function Objects) |
<cuda/std/utility> * | Various utility components (see also: libcu++ Specifics). 1.3.0 / CUDA 11.2 ( pair ) |
<cuda/std/version> | Compile-time version information (see also: libcu++ Specifics). 1.2.0 / CUDA 11.1 |
C Library
Any Standard C++ header not listed below is omitted.
<cuda/std/cassert> | Lightweight assumption testing. 1.0.0 / CUDA 10.2 |
<cuda/std/cstddef> | Fundamental types. 1.0.0 / CUDA 10.2 1.4.0 ( byte ) |