[英]Is there a way of implementing the auto keyword for C++03
在C ++ 03或更早版本中,是否可以实现auto
关键字? 不是对象类,但是可以像这样使用它[C ++ 11]
auto x = 5;
std::cout << x;
我迅速“摘录”了一个实现,但是它很垃圾,因为您可以将其转换为任何类型-太像object
类,而且非常基本,我知道,但是无论如何,这里是:
class auto_t
{
public:
template < typename _Ty > auto_t(const _Ty &_Value)
: __data(_Value)
{
}
template < typename _Ty > operator _Ty()
{
return (_Ty)__data;
}
private:
void *__data;
};
#define auto auto_t
并不是的。 这就是C ++ 11引入它作为关键字而不是库功能的原因。
除了编写检查目标类型并为您创建适当代码的编译器之外,我无法想到任何其他方式来做您想要的事情。
这是一种语言功能,因此由编译器实现。
无法使用相同的语法模拟C ++ 11自动功能。 您提供的代码引入了一个新类型,该新类型仅尝试包装原始类型(忽略它实际上并没有保留原始对象的生存期的事实)。 但是,此新类型将不遵循与原始类型相同的参数依赖查找和类型转换规则。 C ++ 11中的auto关键字是一种语言功能,不是库扩展。 您可以做的最好的模拟方法是使用MACRO,就像boost库一样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.