{"pageProps":{"code":{"CMakeLists.txt":{"name":"CMakeLists.txt","content":"add_executable(bind1 bind1.cpp)\n\nadd_executable(bind2 bind2.cpp)\n\nadd_executable(constexpr constexpr.cpp)\n\nadd_executable(transform1 transform1.cpp)\n\nadd_executable(transform2 transform2.cpp)\n\nadd_executable(transform3 transform3.cpp)\n\nadd_executable(variadic variadic.cpp)\n","path":"code/6771/24T2/9.1/CMakeLists.txt","fileext":"txt"},"bind1.cpp":{"name":"bind1.cpp","content":"#include <iostream>\r\n\r\nauto main() -> int {\r\n  int i;\r\n  int& j = i;\r\n \r\n  decltype(i) x; // int - variable\r\n  decltype(j) y = x; // int& - lvalue\r\n  decltype(5) z;   // int - prvalue\r\n\r\n  (void)x;\r\n  (void)y;\r\n  (void)z;\r\n}","path":"code/6771/24T2/9.1/bind1.cpp","fileext":"cpp"},"bind2.cpp":{"name":"bind2.cpp","content":"#include <iostream>\r\n\r\ntemplate<typename T>\r\nauto print(T&& a) -> void {\r\n  std::cout << a << \"\\n\";\r\n}\r\n\r\nauto goo() -> std::string const {\r\n  return \"Test\";\r\n}\r\n\r\nauto main() -> int {\r\n  auto j = int{1};\r\n  auto const& k = 1;\r\n\r\n  print(1); // rvalue,       foo(int&&)\r\n  print(goo()); // rvalue    foo(const int&&)\r\n  print(j); // lvalue        foo(int&)\r\n  print(k); // const lvalue  foo(const int&)\r\n}","path":"code/6771/24T2/9.1/bind2.cpp","fileext":"cpp"},"constexpr.cpp":{"name":"constexpr.cpp","content":"#include <iostream>\r\n\r\nconstexpr long long factorial(long long n) {\r\n  if (n == 100000000000000) {\r\n    return 0;\r\n  }\r\n  return n + factorial(n + 1);\r\n}\r\n \r\nauto main() -> int {\r\n  constexpr long long ninefactorial = factorial(1);\r\n  std::cout << ninefactorial << \"\\n\";\r\n}","path":"code/6771/24T2/9.1/constexpr.cpp","fileext":"cpp"},"transform1.cpp":{"name":"transform1.cpp","content":"#include <iostream>\r\n#include <type_traits>\r\n\r\ntemplate<typename T1, typename T2>\r\nauto print_is_same() -> void {\r\n  std::cout << std::is_same<T1, T2>() << \"\\n\";\r\n}\r\n\r\nauto main() -> int {\r\n  std::cout << std::boolalpha;\r\n  print_is_same<int, int>();\r\n  // true\r\n  print_is_same<int, int &>(); // false\r\n  print_is_same<int, int &&>(); // false\r\n  print_is_same<int, std::remove_reference<int>::type>();\r\n  // true\r\n  print_is_same<int, std::remove_reference<int &>::type>(); // true\r\n  print_is_same<int, std::remove_reference<int &&>::type>(); // true\r\n  print_is_same<int, std::remove_reference<const int &&>::type>(); // true\r\n}","path":"code/6771/24T2/9.1/transform1.cpp","fileext":"cpp"},"transform2.cpp":{"name":"transform2.cpp","content":"#include <iostream>\r\n#include <type_traits>\r\n\r\nauto main() -> int {\r\n  using A = std::add_rvalue_reference<int>::type;\r\n  using B = std::add_rvalue_reference<int&>::type;\r\n  using C = std::add_rvalue_reference<int&&>::type;\r\n  using D = std::add_rvalue_reference<int*>::type;\r\n\r\n  std::cout << std::boolalpha;\r\n  std::cout << \"typedefs of int&&:\" << \"\\n\";\r\n  std::cout << \"A: \" << std::is_same<int&&, A>::value << \"\\n\";\r\n  std::cout << \"B: \" << std::is_same<int&&, B>::value << \"\\n\";\r\n  std::cout << \"C: \" << std::is_same<int&&, C>::value << \"\\n\";\r\n  std::cout << \"D: \" << std::is_same<int&&, D>::value << \"\\n\";\r\n}","path":"code/6771/24T2/9.1/transform2.cpp","fileext":"cpp"},"transform3.cpp":{"name":"transform3.cpp","content":"#include <iostream>\r\n#include <type_traits>\r\n\r\nauto main() -> int {\r\n  using A = std::add_rvalue_reference<int>;\r\n  using B = std::add_rvalue_reference<int&>;\r\n  \r\n  std::cout << std::boolalpha;\r\n  std::cout << \"typedefs of int&&:\" << \"\\n\";\r\n  std::cout << \"A: \" << std::is_same_v<int&&, A> << \"\\n\";\r\n  std::cout << \"B: \" << std::is_same_v<int&&, B> << \"\\n\";\r\n}","path":"code/6771/24T2/9.1/transform3.cpp","fileext":"cpp"},"variadic.cpp":{"name":"variadic.cpp","content":"#include <iostream>\r\n#include <typeinfo>\r\n\r\ntemplate <typename T>\r\nauto print(const T& msg) -> void {\r\n  std::cout << msg << \" \";\r\n}\r\n\r\ntemplate <typename A, typename... B>\r\nauto print(A head, B... tail) -> void {\r\n  print(head);\r\n  print(tail...);\r\n}\r\n\r\nauto main() -> int {\r\n  print(1, 2.0f);\r\n  std::cout << \"\\n\";\r\n  print(1, 2.0f, \"Hello\");\r\n  std::cout << \"\\n\";\r\n}","path":"code/6771/24T2/9.1/variadic.cpp","fileext":"cpp"}}},"__N_SSG":true}