2015-01-08 2 views

ответ

2

От C++ 11 года он является возможно:

decltype(obj) оценивается во время компиляции и является типа из obj. Он может использоваться всякий раз, когда используется тип.

Таким образом, вы могли бы написать decltype(obj)::data_type b;

decltype является ключевое слово и особенно полезно в обобщенном программировании.

1

Это, кажется, работает нормально; используйте decltype() для C++ 11; Вы можете попробовать TYPEOF() предварительно с ++ 11 TYPEOF() в НКУ: https://gcc.gnu.org/onlinedocs/gcc/Typeof.html

#include <iostream> 
using namespace std; 

template<typename T> 
struct A { 
    T *data; 
    //... 
    typedef T data_type; 
}; 

int main() { 
    A<int>::data_type a; // ok 

    A<int> obj; 
    decltype(obj)::data_type b;  // <-- is it possible to do something like this?? 
} 
+1

Как бы typeof() быть полезным pre C++ 11? – Bathsheba

+0

https://gcc.gnu.org/onlinedocs/gcc/Typeof.html – Sid