Eigen::internal::lapacke_helpers::WrappingHelper< DoubleFn, SingleFn, DoubleCpxFn, SingleCpxFn > Struct Template Reference

Helper type to facilitate the wrapping of raw LAPACKE functions for different types into a single, overloaded C++ function. This is achieved in combination with \r EIGEN_MAKE_LAPACKE_WRAPPER. More...

#include <lapacke_helpers.h>

Public Member Functions

template<typename... Args>
auto call (Args &&...args) -> decltype(double_(std::forward< Args >(args)...))
 
template<typename... Args>
auto call (Args &&...args) -> decltype(single_(std::forward< Args >(args)...))
 
template<typename... Args>
auto call (Args &&...args) -> decltype(double_cpx_(std::forward< Args >(args)...))
 
template<typename... Args>
auto call (Args &&...args) -> decltype(single_cpx_(std::forward< Args >(args)...))
 

Public Attributes

DoubleFn double_
 
SingleFn single_
 
DoubleCpxFn double_cpx_
 
SingleCpxFn single_cpx_
 

Detailed Description

template<typename DoubleFn, typename SingleFn, typename DoubleCpxFn, typename SingleCpxFn>
struct Eigen::internal::lapacke_helpers::WrappingHelper< DoubleFn, SingleFn, DoubleCpxFn, SingleCpxFn >

Helper type to facilitate the wrapping of raw LAPACKE functions for different types into a single, overloaded C++ function. This is achieved in combination with \r EIGEN_MAKE_LAPACKE_WRAPPER.

This implementation works by providing an overloaded call function that just forwards its arguments to the underlying lapack function. Each of these overloads is enabled only if the call is actually well formed. Because these lapack functions take pointers to the underlying scalar type as arguments, even though the actual Scalars would be implicitly convertible, the pointers are not and therefore only a single overload can be valid at the same time. Thus, despite all functions taking fully generic Args&&... args as arguments, there is never any ambiguity.

Member Function Documentation

◆ call() [1/4]

template<typename DoubleFn , typename SingleFn , typename DoubleCpxFn , typename SingleCpxFn >
template<typename... Args>
auto Eigen::internal::lapacke_helpers::WrappingHelper< DoubleFn, SingleFn, DoubleCpxFn, SingleCpxFn >::call ( Args &&...  args) -> decltype(double_(std::forward<Args>(args)...))
inline
107  {
108  return double_(std::forward<Args>(args)...);
109  }
args
Definition: compute_granudrum_aor.py:143
DoubleFn double_
Definition: lapacke_helpers.h:101

References compute_granudrum_aor::args, and Eigen::internal::lapacke_helpers::WrappingHelper< DoubleFn, SingleFn, DoubleCpxFn, SingleCpxFn >::double_.

Referenced by Eigen::internal::lapacke_helpers::call_wrapper().

◆ call() [2/4]

template<typename DoubleFn , typename SingleFn , typename DoubleCpxFn , typename SingleCpxFn >
template<typename... Args>
auto Eigen::internal::lapacke_helpers::WrappingHelper< DoubleFn, SingleFn, DoubleCpxFn, SingleCpxFn >::call ( Args &&...  args) -> decltype(double_cpx_(std::forward<Args>(args)...))
inline

◆ call() [3/4]

template<typename DoubleFn , typename SingleFn , typename DoubleCpxFn , typename SingleCpxFn >
template<typename... Args>
auto Eigen::internal::lapacke_helpers::WrappingHelper< DoubleFn, SingleFn, DoubleCpxFn, SingleCpxFn >::call ( Args &&...  args) -> decltype(single_(std::forward<Args>(args)...))
inline

◆ call() [4/4]

template<typename DoubleFn , typename SingleFn , typename DoubleCpxFn , typename SingleCpxFn >
template<typename... Args>
auto Eigen::internal::lapacke_helpers::WrappingHelper< DoubleFn, SingleFn, DoubleCpxFn, SingleCpxFn >::call ( Args &&...  args) -> decltype(single_cpx_(std::forward<Args>(args)...))
inline

Member Data Documentation

◆ double_

template<typename DoubleFn , typename SingleFn , typename DoubleCpxFn , typename SingleCpxFn >
DoubleFn Eigen::internal::lapacke_helpers::WrappingHelper< DoubleFn, SingleFn, DoubleCpxFn, SingleCpxFn >::double_

◆ double_cpx_

template<typename DoubleFn , typename SingleFn , typename DoubleCpxFn , typename SingleCpxFn >
DoubleCpxFn Eigen::internal::lapacke_helpers::WrappingHelper< DoubleFn, SingleFn, DoubleCpxFn, SingleCpxFn >::double_cpx_

◆ single_

template<typename DoubleFn , typename SingleFn , typename DoubleCpxFn , typename SingleCpxFn >
SingleFn Eigen::internal::lapacke_helpers::WrappingHelper< DoubleFn, SingleFn, DoubleCpxFn, SingleCpxFn >::single_

◆ single_cpx_

template<typename DoubleFn , typename SingleFn , typename DoubleCpxFn , typename SingleCpxFn >
SingleCpxFn Eigen::internal::lapacke_helpers::WrappingHelper< DoubleFn, SingleFn, DoubleCpxFn, SingleCpxFn >::single_cpx_

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