Open3D (C++ API)
0.19.0
Toggle main menu visibility
Loading...
Searching...
No Matches
cpp
open3d
core
FunctionTraits.h
Go to the documentation of this file.
1
// ----------------------------------------------------------------------------
2
// - Open3D: www.open3d.org -
3
// ----------------------------------------------------------------------------
4
// Copyright (c) 2018-2024 www.open3d.org
5
// SPDX-License-Identifier: MIT
6
// ----------------------------------------------------------------------------
7
8
#pragma once
9
10
namespace
open3d
{
11
namespace
core
{
12
15
template
<
typename
T>
16
struct
FunctionTraits
:
public
FunctionTraits
<decltype(&T::operator())> {};
17
33
template
<
typename
ClassType,
typename
T>
34
struct
FunctionTraits
<T ClassType::*> :
public
FunctionTraits
<T> {};
35
36
// Const class member functions
37
template
<
typename
ClassType,
typename
ReturnType,
typename
... Args>
38
struct
FunctionTraits
<ReturnType (ClassType::*)(Args...) const>
39
:
public
FunctionTraits
<ReturnType(Args...)> {};
40
41
// Reference types
42
template
<
typename
T>
43
struct
FunctionTraits
<T&> :
public
FunctionTraits<T>
{};
44
template
<
typename
T>
45
struct
FunctionTraits
<T*> :
public
FunctionTraits<T>
{};
46
47
// Free functions
48
template
<
typename
ReturnType,
typename
... Args>
49
struct
FunctionTraits
<ReturnType(Args...)> {
50
// arity is the number of arguments.
51
enum
{
arity
=
sizeof
...(Args) };
52
53
typedef
std::tuple<Args...>
ArgsTuple
;
54
typedef
ReturnType
result_type
;
55
56
template
<
size_t
i>
57
struct
arg
{
58
typedef
typename
std::tuple_element<i, std::tuple<Args...>>
::type
type
;
59
// the i-th argument is equivalent to the i-th tuple element of a tuple
60
// composed of those arguments.
61
};
62
};
63
64
template
<
typename
T>
65
struct
NullaryFunctionTraits
{
66
using
traits
=
FunctionTraits<T>
;
67
using
res_t
=
typename
traits::result_type;
68
};
69
70
template
<
typename
T>
71
struct
UnaryFunctionTraits
{
72
using
traits
=
FunctionTraits<T>
;
73
using
res_t
=
typename
traits::result_type;
74
using
arg0_t
=
typename
traits::template arg<0>::type;
75
};
76
77
template
<
typename
T>
78
struct
BinaryFunctionTraits
{
79
using
traits
=
FunctionTraits<T>
;
80
using
res_t
=
typename
traits::result_type;
81
using
arg0_t
=
typename
traits::template arg<0>::type;
82
using
arg1_t
=
typename
traits::template arg<1>::type;
83
};
84
85
}
// namespace core
86
}
// namespace open3d
open3d::core
Definition
AdvancedIndexing.cpp:15
open3d
Definition
PinholeCameraIntrinsic.cpp:16
open3d::core::BinaryFunctionTraits
Definition
FunctionTraits.h:78
open3d::core::BinaryFunctionTraits::arg0_t
typename traits::template arg< 0 >::type arg0_t
Definition
FunctionTraits.h:81
open3d::core::BinaryFunctionTraits::traits
FunctionTraits< T > traits
Definition
FunctionTraits.h:79
open3d::core::BinaryFunctionTraits::res_t
typename traits::result_type res_t
Definition
FunctionTraits.h:80
open3d::core::BinaryFunctionTraits::arg1_t
typename traits::template arg< 1 >::type arg1_t
Definition
FunctionTraits.h:82
open3d::core::FunctionTraits< ReturnType(Args...)>::arg
Definition
FunctionTraits.h:57
open3d::core::FunctionTraits< ReturnType(Args...)>::arg::type
std::tuple_element< i, std::tuple< Args... > >::type type
Definition
FunctionTraits.h:58
open3d::core::FunctionTraits< ReturnType(Args...)>::arity
@ arity
Definition
FunctionTraits.h:51
open3d::core::FunctionTraits< ReturnType(Args...)>::result_type
ReturnType result_type
Definition
FunctionTraits.h:54
open3d::core::FunctionTraits< ReturnType(Args...)>::ArgsTuple
std::tuple< Args... > ArgsTuple
Definition
FunctionTraits.h:53
open3d::core::FunctionTraits
Definition
FunctionTraits.h:16
open3d::core::NullaryFunctionTraits
Definition
FunctionTraits.h:65
open3d::core::NullaryFunctionTraits::res_t
typename traits::result_type res_t
Definition
FunctionTraits.h:67
open3d::core::NullaryFunctionTraits::traits
FunctionTraits< T > traits
Definition
FunctionTraits.h:66
open3d::core::UnaryFunctionTraits
Definition
FunctionTraits.h:71
open3d::core::UnaryFunctionTraits::traits
FunctionTraits< T > traits
Definition
FunctionTraits.h:72
open3d::core::UnaryFunctionTraits::arg0_t
typename traits::template arg< 0 >::type arg0_t
Definition
FunctionTraits.h:74
open3d::core::UnaryFunctionTraits::res_t
typename traits::result_type res_t
Definition
FunctionTraits.h:73
Generated by
1.17.0