timemory 3.3.0
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 = (derive) private 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 = std::tuple_size<derived_tuple_t>::value, 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)
 

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 = (derive) private typename std::tuple_element<Idx, derived_tuple_t>::type

Definition at line 94 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 = std::tuple_size<derived_tuple_t>::value, 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 = std::tuple_size<derived_tuple_t>::value;
115 sfinae(b, obj, make_index_sequence<N>{}, arg);
116 if(!b)
117 sfinae(obj, 0, 0, arg);
118 }

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