繁体   English   中英

有没有一种方法可以为C ++ 03实现auto关键字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM