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::assemble< Tp > Struct Template Reference

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

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

Public Types

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

Public Member Functions

template<typename... Args>
 assemble (type &obj, Args &&... args)
 
template<typename Arg , size_t N = std::tuple_size<derived_tuple_t>::value, std::enable_if_t<(N > 0)> = 0>
 assemble (type &obj, Arg &&arg)
 
template<template< typename... > class BundleT, typename... Args>
 assemble (type &obj, BundleT< Args... > &arg)
 

Detailed Description

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

Definition at line 87 of file assemble.hpp.

Member Typedef Documentation

◆ derived_t

template<typename Tp >
template<size_t Idx>
using tim::operation::assemble< Tp >::derived_t = (assemble) private typename std::tuple_element<Idx, derived_tuple_t>::type

Definition at line 96 of file assemble.hpp.

◆ type

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

Definition at line 89 of file assemble.hpp.

Constructor & Destructor Documentation

◆ assemble() [1/3]

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

Definition at line 159 of file assemble.hpp.

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

◆ assemble() [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::assemble< Tp >::assemble ( type obj,
Arg &&  arg 
)
inlineexplicit

Definition at line 104 of file assemble.hpp.

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

◆ assemble() [3/3]

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

Definition at line 113 of file assemble.hpp.

114 {
115 bool b = false;
116 constexpr auto N = std::tuple_size<derived_tuple_t>::value;
117 sfinae(b, obj, make_index_sequence<N>{}, arg);
118 if(!b)
119 sfinae(obj, 0, 0, arg);
120 }

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