由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - Template Metaprogramming有啥实际用途么?
相关主题
这题怎么搞?stl quiz 一问
template metaprogramming 的问题A helloworld OpenMP question?
模板算是纯FP吗segfault
请问这是什么错误呀no log2() in visual studio, only log() ?
C++ template problem10个包子 求救 新手 问个borland c++ 5.5的问题。。
c++ template question:c++ floating point calculation problem (revised)
templatewhat's the difference between a .cpp file and a compilation unit?
问一个C++函数Parameter的问题recursive template?
相关话题的讨论汇总
话题: template话题: log2n话题: value话题: 实际
进入Programming版参与讨论
1 (共1页)
s******o
发帖数: 2233
1
面试的时候碰到的一个题目,写一个compile time的log2(N)的function
不知道这种做法在实际中有啥用处么?
用普通recursive function的话又好写又容易看懂
g*********s
发帖数: 1782
2
can you give more details about the problem.

【在 s******o 的大作中提到】
: 面试的时候碰到的一个题目,写一个compile time的log2(N)的function
: 不知道这种做法在实际中有啥用处么?
: 用普通recursive function的话又好写又容易看懂

s******o
发帖数: 2233
3
Q: write a function that calculates log(2)N at compile time

【在 g*********s 的大作中提到】
: can you give more details about the problem.
a****l
发帖数: 8211
4
当然有用啦,因为你不可能写一个程序比这个更快更省空间的了.

【在 s******o 的大作中提到】
: 面试的时候碰到的一个题目,写一个compile time的log2(N)的function
: 不知道这种做法在实际中有啥用处么?
: 用普通recursive function的话又好写又容易看懂

g*********s
发帖数: 1782
5
then how do u do input/output?

【在 s******o 的大作中提到】
: Q: write a function that calculates log(2)N at compile time
p***o
发帖数: 1252
6
That's part of the solution you need to figure out.

【在 g*********s 的大作中提到】
: then how do u do input/output?
g*********s
发帖数: 1782
7
so u mean if u type "gcc foo.cpp 8" it will give you a message "3"?

【在 p***o 的大作中提到】
: That's part of the solution you need to figure out.
s******o
发帖数: 2233
8
something like this:
template
struct log2n
{
enum { Value = 1 + log2n::Value };
};
template<>
struct log2n<1>
{
enum { Value = 0 };
};
int main(int argc, char* argv[])
{
int n = log2n<16>::Value;
printf("%d\n", n");
return 0;
}

【在 g*********s 的大作中提到】
: so u mean if u type "gcc foo.cpp 8" it will give you a message "3"?
N***m
发帖数: 4460
9
不带这么欺负人的吧?
log2n<奇数>怎么办啊?

【在 s******o 的大作中提到】
: something like this:
: template
: struct log2n
: {
: enum { Value = 1 + log2n::Value };
: };
: template<>
: struct log2n<1>
: {
: enum { Value = 0 };

s******o
发帖数: 2233
10
只需要考虑整数的情况,比如log2(7)=2, log2(8)=3, log2(9)=3 etc...

【在 N***m 的大作中提到】
: 不带这么欺负人的吧?
: log2n<奇数>怎么办啊?

d***q
发帖数: 1119
11

it will fail to be compiled if odd number is there...
meta programming is somehow to be used as DSL..
however my personal experience is not to use them or use them in a
restricted range...

【在 N***m 的大作中提到】
: 不带这么欺负人的吧?
: log2n<奇数>怎么办啊?

1 (共1页)
进入Programming版参与讨论
相关主题
recursive template?C++ template problem
做个调查,有多少人在product code里用recursion?c++ template question:
版上有CS 学位的 有多少能写个最简单的compiler?template
Help C++ Template function link error .问一个C++函数Parameter的问题
这题怎么搞?stl quiz 一问
template metaprogramming 的问题A helloworld OpenMP question?
模板算是纯FP吗segfault
请问这是什么错误呀no log2() in visual studio, only log() ?
相关话题的讨论汇总
话题: template话题: log2n话题: value话题: 实际