fork(1) download
  1. #include <iostream>
  2. #include <utility>
  3.  
  4.  
  5.  
  6. template<typename T>
  7. constexpr const T& mirror(const T& t)
  8. {
  9. return t;
  10. }
  11.  
  12. template<class A, class B>
  13. constexpr auto mirror(const std::pair<A, B>& p)
  14. {
  15. return std::make_pair(mirror(p.second), mirror(p.first));
  16. }
  17.  
  18. int main() {
  19. constexpr std::pair<int, float> a{42, 4.2f};
  20.  
  21. static_assert(std::make_pair(4.2f, 42) == mirror(a), "unexpected");
  22.  
  23. constexpr std::pair<int, std::pair<float, char>> b{0, {4.2f, '*'}};
  24.  
  25. static_assert(std::make_pair(std::make_pair('*', 4.2f), 0) == mirror(b), "unexpected");
  26. }
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
Standard output is empty