fork download
  1. #include<iostream>
  2. #include<memory>
  3.  
  4. template<class T>
  5. class Storage{
  6. public: void add(T& t){ std::cout << "Storage<T>::add(T&)\n"; }
  7. };
  8.  
  9. template<class T>
  10. class Storage<std::unique_ptr<T>> : public Storage<T*>{
  11. public: using Storage<T*>::add;
  12. public: void add(std::unique_ptr<T>& t){ std::cout << "Storage<unique_ptr<T>>::add(std::unique_ptr<T>&)\n"; }
  13. };
  14.  
  15. int main ()
  16. {
  17. int i;
  18. Storage<int> si;
  19. si.add(i);
  20. int* pi = new int;
  21. Storage<std::unique_ptr<int>> su;
  22. su.add(pi);
  23. std::unique_ptr<int> ui;
  24. su.add(ui);
  25. }
  26.  
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
Storage<T>::add(T&)
Storage<T>::add(T&)
Storage<unique_ptr<T>>::add(std::unique_ptr<T>&)