如何在不使用C++ 0x标准的情况下实现auto关键字功能?手工制作的自动模板(不使用C++ 0x)
for(std::deque<std::pair<int, int> >::iterator it = points.begin();
it != points.end(); ++it)
{
...
}
也许这种类:
class AUTO
{
public:
template <typename T1>
AUTO(T1);
template <typename T2>
operator T2();
};
利用这种用法:
for(AUTO it = points.begin(); it != points.end(); ++it)
{
...
}
但是,T1和T2是不同的。 如何将有关T1的信息移动到运营商T2()? 真的有可能吗?
我想到只用于像foreach一样的实现。 C++ 0x的关键字auto有很多用法...感谢链接,我会读。 – k06a 2010-09-05 19:44:24
@ k06a:C++强烈反对将它作为一种新的语言功能实现时,它可以在库中实现。因此,如果某种语言最终出现在语言中,您可以确信没有人找到在图书馆中正确使用它的方法。 (例如,许多其他语言都内置了std :: function和std :: bind这个语言,但它是C++中的一个库函数。) – sbi 2010-09-05 20:52:19
我一直在想为什么BOOST_FOREACH是百分之几远离“手动编码”循环。 – 2010-09-05 21:21:18