ttg 1.0.0
Template Task Graph (TTG): flowgraph-based programming model for high-performance distributed-memory algorithms
Loading...
Searching...
No Matches
add_varargs.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_ADD_VARARGS_HPP
10#define BOOST_CLBL_TRTS_ADD_VARARGS_HPP
11
13
14namespace boost { namespace callable_traits {
15
16//[ add_varargs_hpp
17/*`
18[section:ref_add_varargs add_varargs]
19[heading Header]
20``#include <boost/callable_traits/add_varargs.hpp>``
21[heading Definition]
22*/
23
24template<typename T>
25using add_varargs_t = //see below
26//<-
29 varargs_are_illegal_for_this_type>;
30
31namespace detail {
32
33 template<typename T, typename = std::false_type>
35
36 template<typename T>
37 struct add_varargs_impl <T, typename std::is_same<
38 add_varargs_t<T>, detail::dummy>::type>
39 {
41 };
42}
43//->
44
45template<typename T>
47
48//<-
49}} // namespace boost::callable_traits
50//->
51
52/*`
53[heading Constraints]
54* `T` must be one of the following:
55 * function type
56 * function pointer type
57 * function reference type
58 * member function pointer type
59* If `T` is a pointer, it may not be cv/ref qualified
60
61[heading Behavior]
62* A substitution failure occurs if the constraints are violated.
63* Adds C-style variadics (`...`) to the signature of `T`, if not already present.
64
65[heading Input/Output Examples]
66[table
67 [[`T`] [`add_varargs_t<T>`]]
68 [[`int()`] [`int(...)`]]
69 [[`int(int)`] [`int(int, ...)`]]
70 [[`int (&)()`] [`int(&)(...)`]]
71 [[`int (*)()`] [`int(*)(...)`]]
72 [[`int (*)(...)`] [`int(*)(...)`]]
73 [[`int(foo::*)()`] [`int(foo::*)(...)`]]
74 [[`int(foo::*)() &`] [`int(foo::*)(...) &`]]
75 [[`int(foo::*)() &&`] [`int(foo::*)(...) &&`]]
76 [[`int(foo::*)() const`] [`int(foo::*)(...) const`]]
77 [[`int(foo::*)() transaction_safe`] [`int(foo::*)(...) transaction_safe`]]
78 [[`int`] [(substitution failure)]]
79 [[`int foo::*`] [(substitution failure)]]
80 [[`int (*&)()`] [(substitution failure)]]
81]
82
83[heading Example Program]
84[import ../example/add_varargs.cpp]
85[add_varargs]
86[endsect]
87*/
88//]
89
90#endif
sfinae_try< T, fail_when_same< U, invalid_type, ErrorType >, fail_when_same< U, reference_error, reference_type_not_supported_by_this_metafunction > > try_but_fail_if_invalid
Definition utility.hpp:58
typename BOOST_CLBL_TRTS_DISJUNCTION(function_object< unwrap_reference< T > >, function< T >, pmf< T >, pmd< T >, default_callable_traits< T >)::traits traits
Definition traits.hpp:25
detail::try_but_fail_if_invalid< typename detail::traits< T >::add_varargs, varargs_are_illegal_for_this_type > add_varargs_t
STL namespace.