#include "TypePrinter.h"
#include "LastArg.h"
namespace
{
template
<>
struct
<
wchar_t
> :
<
<
wchar_t
>>
{
static
const
char
*
const
;
};
const
char
*
const
<
wchar_t
>::
=
"wchar_t"
;
}
using
namespace
type_printer
;
using
namespace
last_arg
;
int
()
{
{
PRINT_TYPE(char);
do
{
<
char
>::
(
::
);
<
char
>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(wchar_t);
do
{
<
wchar_t
>::
(
::
);
<
wchar_t
>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(int);
do
{
<
int
>::
(
::
);
<
int
>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(int const);
do
{
<
int
const
>::
(
::
);
<
int
const
>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(int volatile);
do
{
<
int
volatile
>::
(
::
);
<
int
volatile
>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(int const volatile);
do
{
<
int
const
volatile
>::
(
::
);
<
int
const
volatile
>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(int[1]);
do
{
<
int
[
1
]>::
(
::
);
<
int
[
1
]>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(int const[1]);
do
{
<
int
const
[
1
]>::
(
::
);
<
int
const
[
1
]>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(int volatile[1]);
do
{
<
int
volatile
[
1
]>::
(
::
);
<
int
volatile
[
1
]>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(int const volatile[1]);
do
{
<
int
const
volatile
[
1
]>::
(
::
);
<
int
const
volatile
[
1
]>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(char*);
do
{
<
char
*>::
(
::
);
<
char
*>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(const char*const);
do
{
<
const
char
*
const
>::
(
::
);
<
const
char
*
const
>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(int&);
do
{
<
int
&>::
(
::
);
<
int
&>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(volatile int&&);
do
{
<
volatile
int
&&>::
(
::
);
<
volatile
int
&&>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(int[10]);
do
{
<
int
[
10
]>::
(
::
);
<
int
[
10
]>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(const int[1][2][3]);
do
{
<
const
int
[
1
][
2
][
3
]>::
(
::
);
<
const
int
[
1
][
2
][
3
]>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(volatile int(&)[4][5]);
do
{
<
volatile
int
(&)[
4
][
5
]>::
(
::
);
<
volatile
int
(&)[
4
][
5
]>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(const char(*const)[4][5]);
do
{
<
const
char
(*
const
)[
4
][
5
]>::
(
::
);
<
const
char
(*
const
)[
4
][
5
]>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(int());
do
{
<
int
()>::
(
::
);
<
int
()>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(int(*)(char, wchar_t));
do
{
<
int
(*)(
char
,
wchar_t
)>::
(
::
);
<
int
(*)(
char
,
wchar_t
)>::
(
::
);
(
"\n"
); }
while
(
false
);
PRINT_TYPE(int(&(*)(const bool(*)(), volatile const char(&)[1]))[10]);
do
{
<
int
(&(*)(
const
bool
(*)(),
volatile
const
char
(&)[
1
]))[
10
]>::
(
::
);
<
int
(&(*)(
const
bool
(*)(),
volatile
const
char
(&)[
1
]))[
10
]>::
(
::
);
(
"\n"
); }
while
(
false
);
}
{
struct
{
*
=
nullptr
;
};
struct
{
*
=
nullptr
;
};
().
;
(
0
).
;
(
false
).
;
(
1
,
true
,
()).
;
(
0
,
false
,
()).
;
(
(),
(),
1
).
;
(
(),
(),
true
).
;
}
return
0
;
}