星期一我问过这个问题而且我的生活中我不知道如何回答。由于我不知道,我现在想要非常了解。好奇心正在杀死这只猫。给定两个整数,在编译时返回较小的整数。
template<int M, int N>
struct SmallerOfMandN{
//and magic happenes here
};
有指针或怎么做? (今晚将开始阅读Boost MPL。)
答案 0 :(得分:17)
这被称为两个数字的最小值,并且您不需要像mpl
这样的世界重量级库来做这样的事情:
template <int M, int N>
struct compile_time_min
{
static const int smaller = M < N ? M : N;
};
int main()
{
const int smaller = compile_time_min<10, 5>::smaller;
}
当然,如果它是C ++ 0x,你可以很容易地说:
constexpr int compile_time_min(int M, int N)
{
return M < N ? M : N;
}
int main()
{
constexpr int smaller = compile_time_min(10, 5);
}