3

这个问题的重点是模板元编程结构。我发现了两篇文章(一篇两篇,然而两篇没有提供确凿的证据,但我相信这些说法)提供的证据表明 c++0x 原型编译器将指数编译时间转变为线性编译时间。

我有一个模糊的想法,即 auto、decltype 和 variadic 模板将有一些东西是这方面的推动力。我希望看到的是对语言变化和实现这一点的编译器技术的彻底解释,特别是解释如何和为什么。

在我的技能水平上,我在愤怒中使用了boost TMP库精神,以及一些玩具MPL程序。

4

1 回答 1

3

很明显,第一个编译器的处理速度比第二个慢,就像你说的那样,有证据证明这一点

/* first */
template<typename A>
void f(A const&);
template<typename A>
void f(A&);

template<typename A1, typename A2>
void f(A1 const&, A2&);
template<typename A1, typename A2>
void f(A1&, A2 const&);
template<typename A1, typename A2>
void f(A1 const&, A2 const&);
template<typename A1, typename A2>
void f(A1&, A2&);

// ...

/* second */
template<typename ...T>
void f(T &&...);

auto我知道C++中没有完全通用的解决方法。模拟auto需要成百上千行代码(参见 boost.typeof),但它仍然不是通用的。对decltype.

于 2011-02-27T16:38:07.237 回答