Ne.app NeANT
The Ne.app NeANT User module of the NeANT distribution.
Main Page
Related Pages
Topics
Namespaces
Data Structures
Files
File List
Globals
EXTERNAL_HEADERS
RSL
etc
config
src
DUMMY_DEFAULT_ARG.cpp
Go to the documentation of this file.
1
// checking for dummy default arguments
2
3
25
template
<
class
T>
26
T
foo
(
const
T
* = 0) {
return
T
(); }
27
28
template
<>
29
int
foo<int>
(
const
int
*) {
return
1; }
30
31
template
<>
32
long
foo<long>
(
const
long
*) {
return
2; }
33
34
35
struct
X
{ };
36
37
template
<
class
T>
38
struct
A
{
39
int
i_
;
40
41
A
(
int
i
):
i_
(
i
) { }
42
};
43
44
template
<
class
T>
45
struct
B
{
46
int
i_
;
47
48
B
(
int
i
):
i_
(
i
) { }
49
};
50
51
52
template
<
class
T>
53
T
bar
(
const
X
&,
const
T
* = 0) {
return
T
(); }
54
55
template
<>
56
A<int>
bar<A<int> >(
const
X
&,
const
A<int>
*) {
return
A<int>
(1); }
57
58
template
<>
59
B<long>
bar<B<long> >(
const
X
&,
const
B<long>
*) {
return
B<long>
(2); }
60
61
62
int
main
()
63
{
64
int
result
= 0;
65
66
if
(0 !=
foo<char>
())
67
result
=
result
<< 1 + 1;
68
69
if
(1 !=
foo<int>
())
70
result
=
result
<< 1 + 1;
71
72
if
(2 !=
foo<long>
())
73
result
=
result
<< 1 + 1;
74
75
X
x
;
76
77
if
(0 != bar<char>(
x
))
78
result
=
result
<< 1 + 1;
79
80
if
(1 !=
bar
<
A<int>
>(
x
).
i_
)
81
result
=
result
<< 1 + 1;
82
83
if
(2 !=
bar
<
B<long>
>(
x
).
i_
)
84
result
=
result
<< 1 + 1;
85
86
return
result
;
87
}
i
#define i
Definition
17.names.cpp:126
T
#define T
Definition
17.names.cpp:163
i_
#define i_
Definition
17.names.cpp:180
x
#define x
Definition
17.names.cpp:140
result
volatile int result
Definition
18.limits.traps.stdcxx-624.cpp:35
bar
int bar()
Definition
collapse_static_locals.lib.cpp:36
main
int main()
Definition
DUMMY_DEFAULT_ARG.cpp:62
foo< long >
long foo< long >()
Definition
SPECIALIZATION_ON_RETURN_TYPE.cpp:33
foo< int >
int foo< int >()
Definition
SPECIALIZATION_ON_RETURN_TYPE.cpp:30
foo
#define foo(buf, s,...)
Definition
VA_LIST_FUNC_MACRO.cpp:28
foo
Definition
VARIADIC_TEMPLATES.cpp:25
A
Definition
NAMESPACE.cpp:25
B
Definition
NAMESPACE.cpp:31
A
Definition
DEFAULT_TEMPLATE_ARGS.cpp:26
A::i_
int i_
Definition
DUMMY_DEFAULT_ARG.cpp:39
A::A
A(int i)
Definition
DUMMY_DEFAULT_ARG.cpp:41
B
Definition
DEFAULT_TEMPLATE_ARGS.cpp:29
B::i_
int i_
Definition
DUMMY_DEFAULT_ARG.cpp:46
B::B
B(int i)
Definition
DUMMY_DEFAULT_ARG.cpp:48
X
Definition
DUMMY_DEFAULT_ARG.cpp:35
Generated by
1.9.8