Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.75 KB | None | 0 0
  1. #include <iostream>
  2. class test1{
  3. public:
  4. std::string s_;
  5. test1(std::string s):s_(s){};
  6. };
  7. class testu{
  8. public:
  9. std::unique_ptr<test1> us_;
  10. testu(std::unique_ptr<test1> us):us_(std::move(us)){};
  11. };
  12.  
  13. template <int i>
  14. class testt {
  15. public:
  16. std::unique_ptr<test1> us_;
  17. testt<i>(std::unique_ptr<test1> us):us_(std::move(us)){};
  18. };
  19.  
  20. template class testt<0>;
  21.  
  22. int main(int argc, const char * argv[]) {
  23. //without template
  24. std::unique_ptr<test1> us(new test1("test"));
  25. testu* t1=new testu(move(us));
  26. std::cout<<t1->us_->s_<<"n";
  27.  
  28. //with template the constructor fails!
  29. std::unique_ptr<test1> ust(new test1("test"));
  30. testt<0>* t2=new testt<0>(std::move(us));
  31. std::cout<<t2->us_->s_<<"n"; //crash!
  32. return 0;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement