ttg 1.0.0
Template Task Graph (TTG): flowgraph-based programming model for high-performance distributed-memory algorithms
Loading...
Searching...
No Matches
function_object.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_FUNCTION_OBJECT_HPP
10#define BOOST_CLBL_TRTS_DETAIL_FUNCTION_OBJECT_HPP
11
16
17namespace boost { namespace callable_traits { namespace detail {
18
19template<typename T, typename Base>
20struct function_object : Base {
21
22 using type = T;
24 using function_type = typename Base::function_object_signature;
25 using arg_types = typename Base::non_invoke_arg_types;
27
28 static constexpr const bool value = std::is_class<
29 typename std::remove_reference<T>::type>::value;
30
36 using is_noexcept = typename Base::is_noexcept;
39 using is_transaction_safe = typename Base::is_transaction_safe;
43
44 template<template<class...> class Container>
47
48 template<template<class...> class Container, typename... RightArgs>
50 expand_args_left<Container, RightArgs...>;
51
52 template<template<class...> class Container, typename... LeftArgs>
54 expand_args_right<Container, LeftArgs...>;
55
56 template<typename C, typename U = T>
58 typename std::remove_reference<U>::type C::*;
59
60 template<typename>
62
63 template<typename...>
65
66 template<typename...>
68
69 template<std::size_t ElementCount>
71
72 template<std::size_t ElementCount>
74
75 template<std::size_t Index, typename... NewArgs>
77
78 template<std::size_t Index, std::size_t Count>
80
81 template<std::size_t Index, typename... NewArgs>
83
84 template<std::size_t Count>
86
87 template<std::size_t Count>
89
99};
100
101template<typename T, typename U, typename Base>
102struct function_object <T U::*, Base>
104
105}}} // namespace boost::callable_traits::detail
106
107#endif // #ifndef BOOST_CLBL_TRTS_DETAIL_FUNCTION_OBJECT_HPP
typename std::conditional< std::is_reference< T >::value, reference_error, invalid_type >::type error_type
Definition utility.hpp:28
typename function< function_type >::template expand_args< Container > expand_args
typename Base::function_object_signature function_type
typename Base::non_invoke_arg_types arg_types
typename function< function_type >::template expand_args_left< Container, RightArgs... > expand_args_left
typename Base::is_transaction_safe is_transaction_safe
typename function< function_type >::template expand_args_right< Container, LeftArgs... > expand_args_right
typename std::remove_reference< U >::type C::* apply_member_pointer