fork download
  1. #include <vector>
  2. #include <memory>
  3. #include <iostream>
  4. #include <typeinfo>
  5. using namespace std;
  6.  
  7. template <class TIteratorToPointerContainer>
  8. class Something
  9. {
  10. public:
  11. typedef typename TIteratorToPointerContainer::value_type TPointer;
  12. typedef typename TPointer::element_type TValue;
  13. };
  14.  
  15. int main()
  16. {
  17. Something<
  18. typename std::vector< std::shared_ptr<int> >::iterator
  19. >::TPointer pointer;
  20. // "pointer" is of type std::shared_ptr<int>
  21. Something<
  22. typename std::vector< std::shared_ptr<int> >::iterator
  23. >::TValue value;
  24. // "value" is of type int
  25.  
  26. std::cout << "pointer-name = " << typeid(pointer).name() << endl;
  27. std::cout << "value-name = " << typeid(value).name() << endl;
  28. return 0;
  29. }
Success #stdin #stdout 0s 2896KB
stdin
Standard input is empty
stdout
pointer-name = St10shared_ptrIiE
value-name = i