inline void print_item (size_t const i, size_t const j)
{
std::cout << i << "x" << j << "=" << i * j << " ";
}
template <size_t I, size_t J>
struct line_t
{
inline static void print ()
{
print_item(I,J);
line_t<I+1,J>::print();
}
};
template <size_t I>
struct line_t<I,I>
{
inline static void print ()
{
print_item(I,I);
}
};
template <size_t N>
struct table_t
{
inline static void print ()
{
table_t<N-1>::print();
std::cout << std::endl;
line_t<1,N>::print();
}
};
template <>
struct table_t<1>
{
inline static void print ()
{
line_t<1,1>::print();
}
};
template <size_t N>
struct meta99
{
inline static void print ()
{
table_t<N>::print();
std::cout << std::endl;
}
};
int main() {
meta99<9>::print ();
}
C++ meta programming
最新推荐文章于 2024-01-04 15:06:13 发布