Более неотложная проблема - получить информацию от выведенного типа к объявлению члена данных.
class AUTO
{
public:
template <typename T1>
AUTO(T1);
T1 state; // eg deque<...>::iterator - need this!
};
Это явно не произойдет, потому что объект AUTO
должен быть размещен до вызова функции..
Учитывая typeof
или decltype
, это не так сложно, хотя.
#define AUTO( name, initializer ) typeof( initializer ) name = initializer
Конечно, это имеет много ограничений.И typeof
не является стандартным.С поддержкой нескольких компиляторов это, вероятно, будет основой для этих инструментов Boost.