fork(1) download
  1. #include <iostream>
  2. #include <functional>
  3. #include <string>
  4.  
  5. struct TestA
  6. {
  7. std::string s;
  8. TestA(){}
  9. TestA(std::string const&s) : s(s) {}
  10. TestA(TestA const&) = default;
  11. TestA(TestA &&) = default;
  12. TestA &operator=(TestA const&) = default;
  13. TestA &operator=(TestA &&) = default;
  14. ~TestA() = default;
  15. };
  16.  
  17. template<typename T, typename... Args>
  18. std::function<T &&(Args...)> WrapCtor()
  19. {
  20. return [](Args... args) -> T &&
  21. {
  22. return T(args...);
  23. };
  24. }
  25.  
  26. int main()
  27. {
  28. auto f = WrapCtor<TestA, std::string const&>();
  29. TestA inst = f("test");
  30. std::cout << inst.s << std::endl;
  31. }
  32.  
Runtime error #stdin #stdout 0s 4052KB
stdin
Standard input is empty
stdout