timemory  3.2.1
Modular C++ Toolkit for Performance Analysis and Logging. Profiling API and Tools for C, C++, CUDA, Fortran, and Python. The C++ template API is essentially a framework to creating tools: it is designed to provide a unifying interface for recording various performance measurements alongside data logging and interfaces to other tools.
tim::operation::derive< Tp > Struct Template Reference

#include "timemory/operations/types/derive.hpp"

+ Collaboration diagram for tim::operation::derive< Tp >:

Public Types

using type = Tp
 
template<size_t Idx>
using derived_t = typename std::tuple_element< Idx, derived_tuple_t >::type
 

Public Member Functions

template<typename... Args>
 derive (type &obj, Args &&... args)
 
template<typename Arg , size_t N = derived_tuple_v, std::enable_if_t< N !=0 > = 0>
 derive (type &obj, Arg &&arg)
 
template<template< typename... > class BundleT, typename... Args>
 derive (type &obj, BundleT< Args... > &arg)
 

Static Public Attributes

static constexpr TIMEMORY_DELETED_OBJECT(derive) private size_t derived_tuple_v = std::tuple_size<derived_tuple_t>::value
 

Detailed Description

template<typename Tp>
struct tim::operation::derive< Tp >

Definition at line 85 of file derive.hpp.

Member Typedef Documentation

◆ derived_t

template<typename Tp >
template<size_t Idx>
using tim::operation::derive< Tp >::derived_t = typename std::tuple_element<Idx, derived_tuple_t>::type

Definition at line 95 of file derive.hpp.

◆ type

template<typename Tp >
using tim::operation::derive< Tp >::type = Tp

Definition at line 87 of file derive.hpp.

Constructor & Destructor Documentation

◆ derive() [1/3]

template<typename Tp >
template<typename... Args>
tim::operation::derive< Tp >::derive ( type obj,
Args &&...  args 
)
explicit

Definition at line 157 of file derive.hpp.

158 {
159  sfinae(obj, 0, 0, std::forward<Args>(args)...);
160 }

◆ derive() [2/3]

template<typename Tp >
template<typename Arg , size_t N = derived_tuple_v, std::enable_if_t< N !=0 > = 0>
tim::operation::derive< Tp >::derive ( type obj,
Arg &&  arg 
)
inlineexplicit

Definition at line 102 of file derive.hpp.

103  {
104  bool b = false;
105  sfinae(b, obj, make_index_sequence<N>{}, std::forward<Arg>(arg));
106  if(!b)
107  sfinae(obj, 0, 0, std::forward<Arg>(arg));
108  }

◆ derive() [3/3]

template<typename Tp >
template<template< typename... > class BundleT, typename... Args>
tim::operation::derive< Tp >::derive ( type obj,
BundleT< Args... > &  arg 
)
inlineexplicit

Definition at line 111 of file derive.hpp.

112  {
113  bool b = false;
114  constexpr auto N = derived_tuple_v;
115  sfinae(b, obj, make_index_sequence<N>{}, arg);
116  if(!b)
117  sfinae(obj, 0, 0, arg);
118  }
static constexpr TIMEMORY_DELETED_OBJECT(derive) private size_t derived_tuple_v
Definition: derive.hpp:93

References tim::operation::derive< Tp >::derived_tuple_v.

Member Data Documentation

◆ derived_tuple_v

template<typename Tp >
constexpr TIMEMORY_DELETED_OBJECT (derive) private size_t tim::operation::derive< Tp >::derived_tuple_v = std::tuple_size<derived_tuple_t>::value
staticconstexpr

Definition at line 93 of file derive.hpp.

Referenced by tim::operation::derive< Tp >::derive().


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