有没有办法为C++ 03实现auto关键字

Jos*_*eph 5 c++

在C++ 03或更早版本中,有没有办法实现auto关键字?不是对象类,但它可以像这样使用[C++ 11]

auto x = 5;
std::cout << x;
Run Code Online (Sandbox Code Playgroud)

我很快就'掀起'了一个实现,但它很垃圾,因为你可以将它转换为任何类型 - 太像一个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
Run Code Online (Sandbox Code Playgroud)

Nic*_*ckC 1

无法使用相同的语法来模拟 C++11 自动功能。您提供的代码引入了一种新类型,它只是尝试包装您的原始类型(忽略它实际上并不保留原始对象的生命周期的事实)。但是,此新类型不会遵循与原始类型相同的参数相关查找和类型转换规则。C++11 中的 auto 关键字是一种语言功能,而不是库扩展。最好的模拟方法是使用像boost 库那样的宏。