AmpGen 2.1
Loading...
Searching...
No Matches
MetaUtils.h File Reference
#include <memory>
#include <tuple>
#include <vector>
#include <string>
#include <cxxabi.h>
#include <algorithm>

Go to the source code of this file.

Classes

struct  AmpGen::detail::zeroType< T, args >
 

Namespaces

namespace  AmpGen
 
namespace  AmpGen::detail
 

Macros

#define def_has_function(function_name)
 

Typedefs

template<int N, typename... args>
using AmpGen::nthType = typename std::tuple_element<N, std::tuple<args...>>::type
 
template<typename... args>
using AmpGen::zeroType = typename detail::zeroType<args...>::type
 

Functions

template<class TYPE>
std::string AmpGen::type_string ()
 Utility classes for compile-time metaprogramming, such as identifying the types of arguments for generating source code, compile-time unrolling of tuples and loops, and identifying if a class can be constructed in different ways.
 
template<class TYPE>
std::string AmpGen::type_string (const TYPE &)
 
template<std::size_t I = 0, typename FuncT, typename... Tp>
std::enable_if_t< I==sizeof...(Tp), void > AmpGen::for_each (std::tuple< Tp... > &, FuncT)
 

Class Documentation

◆ AmpGen::detail::zeroType

struct AmpGen::detail::zeroType
Class Members
typedef T type

Macro Definition Documentation

◆ def_has_function

#define def_has_function ( function_name)
Value:
template <typename T> \
struct has_##function_name { \
template<typename U> static auto test(int) -> decltype(std::declval<U>().function_name() == 1, std::true_type()); \
template<typename> static std::false_type test(...); \
static constexpr bool value = std::is_same<decltype(test<T>(0)), std::true_type>::value; \
};