Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
AMReX_TypeTraits.H File Reference
#include <AMReX_Config.H>
#include <AMReX_Extension.H>
#include <vector>
#include <type_traits>

Go to the source code of this file.

Classes

struct  amrex::IsBaseFab< A >
struct  amrex::IsBaseFab< D >
struct  amrex::IsFabArray< A >
struct  amrex::IsFabArray< D >
struct  amrex::IsMultiFabLike< M >
struct  amrex::IsMultiFabLike< M >
struct  amrex::HasAtomicAdd< T, Enable >
struct  amrex::HasAtomicAdd< int >
struct  amrex::HasAtomicAdd< long >
struct  amrex::HasAtomicAdd< unsigned int >
struct  amrex::HasAtomicAdd< unsigned long long >
struct  amrex::HasAtomicAdd< float >
struct  amrex::HasAtomicAdd< double >
struct  amrex::IsAddAssignable< T, Enable >
struct  amrex::IsAddAssignable< T, std::void_t< decltype(std::declval< T & >()+=std::declval< T >())> >
struct  amrex::IsMultiFabIterator< T >
struct  amrex::IsParticleIterator< T >
struct  amrex::IsParticleContainer< T >
struct  amrex::DefinitelyNotHostRunnable< T >
struct  amrex::MaybeDeviceRunnable< T >
struct  amrex::MaybeHostDeviceRunnable< T >
struct  amrex::Same< T, U >
struct  amrex::Same< T, U1, Us >
struct  amrex::IsCallable< T, Args >
 Test if a given type T is callable with arguments of type Args... More...
struct  amrex::IsCallableR< R, T, Args >
 Test if a given type T is callable with arguments of type Args... More...
struct  amrex::Conjunction<... >
 Logical traits let us combine multiple type requirements. More...
struct  amrex::Conjunction< B1 >
struct  amrex::Conjunction< B1, Bn... >
struct  amrex::Disjunction<... >
struct  amrex::Disjunction< B1 >
struct  amrex::Disjunction< B1, Bn... >
struct  amrex::IsNarrowingConversion< From, To >
struct  amrex::IsStoreAtomic< T >
struct  amrex::IsStoreAtomic< T >

Namespaces

namespace  amrex

Macros

#define AMREX_IS_TRIVIALLY_COPYABLE(T)
#define AMREX_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE(T)

Typedefs

template<bool B, class T = void>
using amrex::EnableIf_t = std::enable_if_t<B,T>
template<template< class... > class Op, class... Args>
using amrex::IsDetected = typename detail::Detector<detail::Nonesuch, void, Op, Args...>::value_t
template<template< class... > class Op, class... Args>
using amrex::Detected_t = typename detail::Detector<detail::Nonesuch, void, Op, Args...>::type
template<class Default, template< class... > class Op, class... Args>
using amrex::DetectedOr = typename detail::Detector<Default, void, Op, Args...>::type
template<class Expected, template< typename... > class Op, class... Args>
using amrex::IsDetectedExact = std::is_same<Expected, Detected_t<Op, Args...>>
template<class B>
using amrex::Negation = std::integral_constant<bool, !bool(B::value)>
template<typename T, typename... Args>
using amrex::IsConvertible = std::conjunction<std::is_convertible<Args, T>...>
 Test if all the types Args... are automatically convertible to type T.

Variables

template<class A>
constexpr bool amrex::IsBaseFab_v = IsBaseFab<A>::value
template<class A>
constexpr bool amrex::IsFabArray_v = IsFabArray<A>::value
template<class M>
constexpr bool amrex::IsMultiFabLike_v = IsMultiFabLike<M>::value
template<typename T, typename... Args>
constexpr bool amrex::IsConvertible_v = IsConvertible<T, Args...>::value
template<typename From, typename To>
constexpr bool amrex::IsNarrowingConversion_v = IsNarrowingConversion<From, To>::value
template<typename From, typename To>
constexpr bool amrex::IsNonNarrowingConversion_v = !IsNarrowingConversion<From, To>::value

Macro Definition Documentation

◆ AMREX_IS_TRIVIALLY_COPYABLE

#define AMREX_IS_TRIVIALLY_COPYABLE ( T)
Value:
std::is_trivially_copyable_v<T>

◆ AMREX_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE

#define AMREX_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE ( T)
Value:
std::is_trivially_default_constructible_v<T>