10 template <
class F,
class... Args>
14 std::forward<Args>(args)...
18 template <
class R,
class Class,
class... Args>
19 inline R
invoke(META::memfn_type<R, Class, Args...> fn, Class*
const obj, Args&&... args){
22 std::forward<Args>(args)...
26 template <
class R,
class Class,
class... Args>
27 inline R
invoke(META::const_memfn_type<R, Class, Args...> fn,
realConst(Class*) obj, Args&&... args){
30 std::forward<Args>(args)...
34 template <
class R,
class Class>
35 inline R
invoke(META::mem_ptr_type<R, Class> fn,
const Class* obj){
43 template <
class R,
class... Args>
44 inline R
invoke(META::fn_sig_type<R, Args...> fn, Args&&... args){
47 std::forward<Args>(args)...
51 template <
class R,
class Class,
class... Args>
52 inline R
invoke(META::memfn_type<R, Class, Args...> fn, Class& obj, Args&&... args){
55 std::forward<Args>(args)...
59 template <
class R,
class Class,
class... Args>
60 inline R
invoke(META::const_memfn_type<R, Class, Args...> fn,
const Class& obj, Args&&... args){
63 std::forward<Args>(args)...
67 template <
class R,
class Class,
class... Args>
68 inline R
invoke(META::memfn_type<R, Class, Args...> fn, Class&& obj, Args&&... args){
71 std::forward<Args>(args)...
75 template <
class R,
class Class,
class... Args>
76 inline R
invoke(META::memfn_type<R, Class, Args...> fn, Class*
const obj, Args&&... args){
79 std::forward<Args>(args)...
83 template <
class R,
class Class,
class... Args>
84 inline R
invoke(META::const_memfn_type<R, Class, Args...> fn,
realConst(Class*) obj, Args&&... args){
87 std::forward<Args>(args)...
91 template <
class R,
class Class>
92 inline R
invoke(META::mem_ptr_type<R, Class> fn,
const Class& obj){
96 template <
class R,
class Class>
97 inline R
invoke(META::mem_ptr_type<R, Class> fn,
const Class* obj){
101 template <
class F,
class... Args>
104 std::forward<Args>(args)...
108 template <
class F,
class... Args>
Global namespace of the SCL.
auto invoke(F &&fn, Args &&... args) -> decltype(std::forward< F >(fn)(std::forward< Args >(args)...))
#define SCL_RETURNS(stmt)
decltype(invoke(std::declval< F >(), std::declval< Args >()...)) invoke_result_t
R invoke(scl::tools::meta ::fn_sig_type< R, Args... > fn, Args &&... args)