ttg 1.0.0
Template Task Graph (TTG): flowgraph-based programming model for high-performance distributed-memory algorithms
Loading...
Searching...
No Matches
pmd.hpp
Go to the documentation of this file.
1/*
2
3@Copyright Barrett Adair 2015-2017
4Distributed under the Boost Software License, Version 1.0.
5(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
6
7*/
8
9#ifndef BOOST_CLBL_TRTS_DETAIL_PMD_HPP
10#define BOOST_CLBL_TRTS_DETAIL_PMD_HPP
11
17
18namespace boost { namespace callable_traits { namespace detail {
19
20template<typename T>
22
23template<typename D, typename T>
24struct pmd<D T::*> : default_callable_traits<> {
25
26 static constexpr bool value = true;
27
28 using traits = pmd;
29 using class_type = T;
30 using invoke_type = T const &;
31 using type = D T::*;
32 using function_type = typename std::add_lvalue_reference<D>::type(invoke_type);
34 using arg_types = std::tuple<invoke_type>;
35 using non_invoke_arg_types = std::tuple<>;
36
37 using return_type = typename std::add_lvalue_reference<D>::type;
38
39 template<typename C>
40 using apply_member_pointer = D C::*;
41
42 template<typename R>
43 using apply_return = R T::*;
44
45 template<template<class...> class Container>
46 using expand_args = Container<invoke_type>;
47
48 using is_member_pointer = std::true_type;
49};
50
51}}} // namespace boost::callable_traits::detail
52
53#endif
Container< invoke_type > expand_args
Definition pmd.hpp:46
typename std::add_lvalue_reference< D >::type return_type
Definition pmd.hpp:37
typename std::add_lvalue_reference< D >::type(invoke_type) function_type
Definition pmd.hpp:32
std::tuple< invoke_type > arg_types
Definition pmd.hpp:34