fork download
  1. #include <cassert>
  2. #include <vector>
  3. #include <map>
  4.  
  5. template<class container, class value_type>
  6. struct rebind;
  7.  
  8. template<template <class> class container, class T, class value_type>
  9. struct rebind<container<T>, value_type> { typedef container<value_type> other; };
  10. template<template <class, class> class container, class T, class B, class value_type>
  11. struct rebind<container<T, B>, value_type> { typedef container<value_type, B> other; };
  12. template<template <class, class, class> class container, class T, class B, class C, class value_type>
  13. struct rebind<container<T, B, C>, value_type> { typedef container<value_type, B, C> other; };
  14. template<template <class, class, class, class> class container, class T, class B, class C, class D, class value_type>
  15. struct rebind<container<T, B, C, D>, value_type> { typedef container<value_type, B, C, D> other; };
  16.  
  17.  
  18. int main() {
  19. rebind<std::vector<char>, int>::other y;
  20. y.clear();
  21. rebind<std::map<char, short>, int>::other z;
  22. z.clear();
  23. }
  24.  
Success #stdin #stdout 0s 2824KB
stdin
Standard input is empty
stdout
Standard output is empty