Next:
Arithmethic Library(Science)
, Previous:
Compile time Calculate
, Up:
Index
Meta-Program
Meta-Program
프로그램을 만드는 프로그램
대부분의 프로그래밍 언어에서는 텍스트 파일을 읽고 특정 변환을 수행하는 프로그램을 작성할 수 있다.
C++에서는 컴파일하는 동안 계산하거나 변환하는 프로그램을 작성할 수 있다.
(계산 가능한 모든 것들을 C++의 컴파일 타임에 계산할 수 있다.)
최초의 메타 프로그래밍
// Erwin Unruh
template
<
int
i
>
struct
D
{
D
(
void
*
)
;
operator
int
(
)
;
}
;
template
<
int
p
,
int
i
>
struct
is_prime
{
enum
{
prim
=
(
p
==
2
)
||
(
p
%
i
)
&&
is_prime
<
(
i
>
2
?
p
:
0
)
,
i
-1
>
::
prim
}
;
}
;
template
<
int
i
>
struct
Prime_print
{
Prime_print
<
i
-1
>
a
;
enum
{
prim
=
is_prime
<
i
,
i
-1
>
::
prim
}
;
void
f
(
)
{
D
<
i
>
d
=
prim
?
1
:
0
;
a
.
f
(
)
;
}
}
;
template
<>
struct
is_prime
<
0
,
0
>
{
enum
{
prim
=
1
}
;
}
;
template
<>
struct
is_prime
<
0
,
1
>
{
enum
{
prim
=
1
}
;
}
;
template
<>
struct
Prime_print
<
1
>
{
enum
{
prim
=
0
}
;
void
f
(
)
{
D
<
1
>
d
=
prim
?
1
:
0
;
}
;
}
;
int
main
(
void
)
{
Prime_print
<
18
>
a
;
a
.
f
(
)
;
}