yoda is hosted by Hepforge, IPPP Durham
YODA - Yet more Objects for Data Analysis 2.0.0
MetaUtils.h File Reference
#include <tuple>

Go to the source code of this file.

Classes

struct  MetaUtils::conjunction<... >
 Logical conjuction implementation. More...
 
struct  MetaUtils::conjunction< B1 >
 
struct  MetaUtils::conjunction< B1, Bn... >
 
struct  MetaUtils::nonesuch
 
struct  MetaUtils::detail::detector< Default, AlwaysVoid, Op, Args >
 
struct  MetaUtils::detail::detector< Default, std::void_t< Op< Args... > >, Op, Args... >
 

Namespaces

namespace  MetaUtils
 
namespace  MetaUtils::operatorTraits
 
namespace  MetaUtils::detail
 Traits detection. Check's whether expression is valid for type T.
 

Macros

#define CHECK_TEST_RES(pred)   MetaUtils::check(pred, __PRETTY_FUNCTION__)
 

Typedefs

template<class T >
using MetaUtils::operatorTraits::addition_assignment_t = decltype(std::declval< T & >()+=std::declval< const T & >())
 
template<typename T , template< typename ... > class U>
using MetaUtils::is_instance = is_instance_impl< std::decay_t< T >, U >
 Detects if type T is an instance of template U.
 
template<template< class... > class Op, class... Args>
using MetaUtils::is_detected = typename detail::detector< nonesuch, void, Op, Args... >::value_t
 
template<template< class... > class Op, class... Args>
using MetaUtils::detected_t = typename detail::detector< nonesuch, void, Op, Args... >::type
 
template<class Default , template< class... > class Op, class... Args>
using MetaUtils::detected_or = detail::detector< Default, void, Op, Args... >
 
template<class Expected , template< class... > class Op, class... Args>
using MetaUtils::is_detected_exact = std::is_same< Expected, detected_t< Op, Args... > >
 

Functions

template<class Func , std::size_t... Is>
constexpr void MetaUtils::staticForImpl (Func &&f, std::index_sequence< Is... >)
 
template<size_t N, class Func >
constexpr void MetaUtils::staticFor (Func &&f)
 Used to apply functor on tuple. Calls lambda with integral constant, which can be used to query tuple elements via std::get<I>(), and thus iterate over tuple.
 
template<typename T , template< class U > class Concept>
constexpr bool MetaUtils::checkConcept ()
 checks whether if T satisfies user defined Concept
 
int MetaUtils::check (bool pred, const char *funcName)
 
template<size_t I, typename... Ts>
auto MetaUtils::removeTupleElement (const std::tuple< Ts... > &tup)
 

Variables

template<template< class... > class Op, class... Args>
constexpr bool MetaUtils::is_detected_v = is_detected<Op, Args...>::value
 

Macro Definition Documentation

◆ CHECK_TEST_RES

#define CHECK_TEST_RES (   pred)    MetaUtils::check(pred, __PRETTY_FUNCTION__)

Definition at line 6 of file MetaUtils.h.