// MetaProgramming.cpp : Defines the entry point for the console application.
//

#include <stdio.h>
#include <tchar.h>

template <unsigned long N>
struct binary
{
    static unsigned const value =
        binary<N/10>::value*2 + N%10;
};

template <>
struct binary<0>
{
    static unsigned const value = 0;
};

int _tmain(int argc, _TCHAR* argv[])
{
    unsigned const one   = binary<   1>::value;
    unsigned const two   = binary<  10>::value;
    unsigned const three = binary<  11>::value;
    unsigned const four  = binary< 100>::value;
    unsigned const seven = binary< 111>::value;
    unsigned const nine  = binary<1001>::value;

    printf (" one   =%d\n", one  );
    printf (" two   =%d\n", two  );
    printf (" three =%d\n", three);
    printf (" four  =%d\n", four );
    printf (" seven =%d\n", seven);
    printf (" nine  =%d\n", nine );

    return 0;
}
Posted by 셈말짓기 :