Mackey  V3.3
A C++ library for computing RO(G) graded homology
SFINAE.hpp File Reference

Contains all the SFINAE tricks. More...

#include <type_traits>
Include dependency graph for SFINAE.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 mackey
 Everything in this library is under this namespace.
 
 mackey::SFINAE
 Contains typedefs used to detect types and existence of methods.
 

Typedefs

template<typename T >
using is_Dense = decltype(test_Dense(std::declval< T * >()))
 Detects if T is a dense matrix. More...
 
template<typename T >
using is_Sparse = decltype(test_Sparse(std::declval< T * >()))
 Detects if T is a sparse matrix. More...
 
template<typename T >
using is_sparse_row_major = decltype(test_SRM(std::declval< T * >()))
 Detects if T is sparse row major matrix. More...
 
template<typename T >
using is_finite_cyclic = decltype(test_finite_cyclic(std::declval< T >()))
 Detects if T=Z<N> More...
 
template<typename T >
using has_operator_evaluation_int_int = decltype(test_operator_evaluation_int_int< T >(0))
 Detects if T has an operator()(int,int) More...
 

Functions

constexpr std::false_type test_Dense (...)
 Detects if T is a dense matrix. More...
 
template<typename T >
constexpr std::true_type test_Dense (Eigen::MatrixBase< T > *)
 Detects if T is a dense matrix. More...
 
constexpr std::false_type test_Sparse (...)
 Detects if T is a sparse matrix. More...
 
template<typename T >
constexpr std::true_type test_Sparse (Eigen::SparseMatrixBase< T > *)
 Detects if T is a sparse matrix. More...
 
constexpr std::false_type test_SRM (...)
 Detects if T is sparse row major matrix. More...
 
template<typename T , typename S >
constexpr std::true_type test_SRM (Eigen::SparseMatrix< T, 1, S > *)
 Detects if T is sparse row major matrix. More...
 
constexpr std::false_type test_finite_cyclic (...)
 Detects if T=Z<N> More...
 
template<int64_t N, typename T >
constexpr std::true_type test_finite_cyclic (Z_mod< N, T >)
 Detects if T=Z<N> More...
 
template<typename T >
constexpr std::false_type test_operator_evaluation_int_int (...)
 Detects if T has an operator()(int,int) More...
 
template<typename T >
constexpr decltype(std::declval< T >().operator()(std::declval< int >(), std::declval< int >()), std::true_type()) test_operator_evaluation_int_int (int)
 Detects if T has an operator()(int,int) More...
 

Detailed Description

Contains all the SFINAE tricks.