1
- #include " pybind11_tests.h"
2
-
3
1
// adl = Argument Dependent Lookup
4
2
5
- namespace adl_mock {
3
+ #include " pybind11_tests.h"
4
+
5
+ namespace have_a_ns {
6
6
struct type_mock {};
7
7
struct mock_caster {
8
8
static int num () { return 101 ; }
9
9
};
10
10
mock_caster pybind11_select_caster (type_mock *);
11
- } // namespace adl_mock
11
+ } // namespace have_a_ns
12
+
13
+ // namespace global {
14
+ struct global_ns_type_mock {};
15
+ struct global_ns_mock_caster {
16
+ static int num () { return 202 ; }
17
+ };
18
+ global_ns_mock_caster pybind11_select_caster (global_ns_type_mock *);
19
+ // } // namespace global
20
+
21
+ namespace {
22
+ struct unnamed_ns_type_mock {};
23
+ struct unnamed_ns_mock_caster {
24
+ static int num () { return 303 ; }
25
+ };
26
+ #if defined(__GNUC__)
27
+ # pragma GCC diagnostic push
28
+ # pragma GCC diagnostic ignored "-Wunneeded-internal-declaration"
29
+ #endif
30
+ unnamed_ns_mock_caster pybind11_select_caster (unnamed_ns_type_mock *);
31
+ #if defined(__GNUC__)
32
+ # pragma GCC diagnostic pop
33
+ #endif
34
+ } // namespace
12
35
13
- namespace adl_mrc { // minimal real caster
36
+ namespace mrc_ns { // minimal real caster
14
37
15
38
struct type_mrc {
16
39
int value = -9999 ;
@@ -31,7 +54,7 @@ struct minimal_real_caster {
31
54
// NOLINTNEXTLINE(google-explicit-constructor)
32
55
operator type_mrc const &() {
33
56
static type_mrc obj;
34
- obj.value = 303 ;
57
+ obj.value = 404 ;
35
58
return obj;
36
59
}
37
60
@@ -43,15 +66,17 @@ struct minimal_real_caster {
43
66
44
67
minimal_real_caster pybind11_select_caster (type_mrc *);
45
68
46
- } // namespace adl_mrc
69
+ } // namespace mrc_ns
47
70
48
71
TEST_SUBMODULE (make_caster_adl, m) {
49
- m.def (" num_mock" , []() { return py::detail::make_caster<adl_mock::type_mock>::num (); });
72
+ m.def (" have_a_ns_num" , []() { return py::detail::make_caster<have_a_ns::type_mock>::num (); });
73
+ m.def (" global_ns_num" , []() { return py::detail::make_caster<global_ns_type_mock>::num (); });
74
+ m.def (" unnamed_ns_num" , []() { return py::detail::make_caster<unnamed_ns_type_mock>::num (); });
50
75
51
- m.def (" obj_mrc_return " , []() {
52
- adl_mrc ::type_mrc obj;
53
- obj.value = 404 ;
76
+ m.def (" mrc_return " , []() {
77
+ mrc_ns ::type_mrc obj;
78
+ obj.value = 505 ;
54
79
return obj;
55
80
});
56
- m.def (" obj_mrc_arg " , [](adl_mrc ::type_mrc const &obj) { return obj.value + 2000 ; });
81
+ m.def (" mrc_arg " , [](mrc_ns ::type_mrc const &obj) { return obj.value + 2000 ; });
57
82
}
0 commit comments