fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <utility>
  4.  
  5. template<class T>
  6. struct C {
  7. void insert(const T&) { std::cout << "const T&" << std::endl; }
  8. //void insert(T&&) { std::cout << "T&&" << std::endl; }
  9. template<class P>
  10. void insert(P&&) { std::cout << "P&&" << std::endl; }
  11. };
  12.  
  13. int main()
  14. {
  15. C<std::pair<std::string, int>> v;
  16.  
  17. v.insert(std::make_pair("1st", 1));
  18.  
  19. v.insert(std::pair<std::string, int>("2nd", 2));
  20.  
  21. std::pair<std::string, int> p1{"3rd", 3};
  22. v.insert(p1);
  23.  
  24. const std::pair<std::string, int> p2{"4th", 4};
  25. v.insert(p2);
  26.  
  27. v.insert({"5th", 5});
  28. }
  29.  
Success #stdin #stdout 0s 2984KB
stdin
Standard input is empty
stdout
P&&
P&&
P&&
const T&
const T&