Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
art
art
Utilities
pointersEqual.h
Go to the documentation of this file.
1
#ifndef art_Utilities_pointersEqual_h
2
#define art_Utilities_pointersEqual_h
3
// Compare two pointers taking into account possible multiple inheritance
4
5
#include "
canvas/Utilities/Exception.h
"
6
7
#include <type_traits>
8
9
namespace
art
{
10
template
<
typename
T1,
typename
T2>
11
inline
std::enable_if_t<std::is_same<T1, T2>::value
||
12
std::is_base_of<T1, T2>::value
||
13
std::is_base_of<T2, T1>::value
,
14
bool
>
15
pointersEqual
(
T1
*
t1
,
T2
* t2)
16
{
17
return
t1 == t2;
18
}
19
20
// Not compatible.
21
template
<
typename
T1,
typename
T2>
22
std::enable_if_t<!std::is_same<T1, T2>::value
&&
23
!
std::is_base_of<T1, T2>::value
&&
24
!
std::is_base_of<T2, T1>::value
,
25
bool
>
26
pointersEqual
(
T1
*,
T2
*)
27
{
28
throw
art::Exception
(
art::errors::LogicError
)
29
<<
"Tried to compare two incompatible pointers.\n"
;
30
}
31
}
// namespace art
32
33
#endif
/* art_Utilities_pointersEqual_h */
34
35
// Local Variables:
36
// mode: c++
37
// End:
art::errors::LogicError
Definition:
Exception.h:33
Exception.h
T2
Definition:
013_class.h:14
art::pointersEqual
std::enable_if_t< std::is_same< T1, T2 >::value||std::is_base_of< T1, T2 >::value||std::is_base_of< T2, T1 >::value, bool > pointersEqual(T1 *t1, T2 *t2)
Definition:
pointersEqual.h:15
T1
Definition:
013_class.h:10
test_gpu_visible.t1
t1
Definition:
test_gpu_visible.py:16
art::Exception
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition:
Exception.h:66
art
Definition:
BasicOptionsHandler.h:9
submit_mcc.value
value
Definition:
submit_mcc.py:159
Generated by
1.8.11