EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::detail::can_interpolate< Point1, Point2, Point3, Value > Struct Template Reference

check types for requirements needed by interpolation More...

#include <acts/blob/sPHENIX/Core/include/Acts/Utilities/detail/interpolation_impl.hpp>

Static Public Member Functions

template<typename C >
static auto value_type_test (C *c) -> decltype(C(std::declval< double >()*std::declval< C >()+std::declval< double >()*std::declval< C >()), std::true_type())
 
template<typename C >
static std::false_type value_type_test (...)
 
template<typename C >
static auto point_type_test (C *c) -> decltype(double(std::declval< C >()[0]), std::true_type())
 
template<typename C >
static std::false_type point_type_test (...)
 

Static Public Attributes

static const bool value
 

Detailed Description

template<typename Point1, typename Point2, typename Point3, typename Value>
struct Acts::detail::can_interpolate< Point1, Point2, Point3, Value >

check types for requirements needed by interpolation

Template Parameters
Point1type for specifying geometric positions
Point2type for specifying geometric positions
Point3type for specifying geometric positions
Valuetype of values to be interpolated

This helper struct provides compile-time information whether the provided Point and Value types can be used in the Acts::interpolate function.

The following boolean variable

is true if all Point types and Value fulfill the type requirements for being used in the interpolation function, otherwise it is false. This expression can be employed in std::enable_if_t to use SFINAE patterns to enable/disable (member) functions.

Definition at line 37 of file interpolation_impl.hpp.

View newest version in sPHENIX GitHub at line 37 of file interpolation_impl.hpp

Member Function Documentation

template<typename Point1 , typename Point2 , typename Point3 , typename Value >
template<typename C >
static auto Acts::detail::can_interpolate< Point1, Point2, Point3, Value >::point_type_test ( C *  c) -> decltype(double(std::declval< C >()[0]), std::true_type())
static
template<typename Point1 , typename Point2 , typename Point3 , typename Value >
template<typename C >
static std::false_type Acts::detail::can_interpolate< Point1, Point2, Point3, Value >::point_type_test (   ...)
static
template<typename Point1 , typename Point2 , typename Point3 , typename Value >
template<typename C >
static auto Acts::detail::can_interpolate< Point1, Point2, Point3, Value >::value_type_test ( C *  c) -> decltype(C(std::declval< double >()*std::declval< C >()+std::declval< double >()*std::declval< C >()), std::true_type())
static
template<typename Point1 , typename Point2 , typename Point3 , typename Value >
template<typename C >
static std::false_type Acts::detail::can_interpolate< Point1, Point2, Point3, Value >::value_type_test (   ...)
static

Member Data Documentation

template<typename Point1 , typename Point2 , typename Point3 , typename Value >
const bool Acts::detail::can_interpolate< Point1, Point2, Point3, Value >::value
static
Initial value:
=
std::is_same<std::true_type,
decltype(value_type_test<Value>(nullptr))>::value and
std::is_same<std::true_type,
decltype(point_type_test<Point1>(nullptr))>::value and
std::is_same<std::true_type,
decltype(point_type_test<Point2>(nullptr))>::value and
std::is_same<std::true_type,
decltype(point_type_test<Point3>(nullptr))>::value

Definition at line 52 of file interpolation_impl.hpp.

View newest version in sPHENIX GitHub at line 52 of file interpolation_impl.hpp


The documentation for this struct was generated from the following file: