- #include <iostream> 
- #include <memory> 
- #include <vector> 
- using namespace std; 
-   
- template<typename T, typename Arg1> 
- std::unique_ptr<T> forwarding_problem(Arg1 arg1)					// это не должно заработать на тестовом примере 
- {		 
- 	return std::unique_ptr<T>(new T(arg1)); 
- } 
-   
- template<typename T, typename Arg1> 
- std::unique_ptr<T> forwarding_solution(Arg1&& arg1)					// это предлагается как решение, но оно не понадобилось 
- { 
- 	return std::unique_ptr<T>(new T(std::forward(arg1))); 
- } 
-   
- class D 
- { 
- public: 
- 	D(std::vector<int>* vec) : v{ vec } {} 
- private: 
- 	std::vector<int>* v; 
- }; 
-   
- void test() 
- { 
- 	auto pointer = forwarding_problem<D*>(new D(new std::vector<int>{0,0,7}));		// вместо ошибки компиляции всё нормально запускается 
- } 
-   
- int main()  
- { 
- 	test(); 
- 	return 0; 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnMT4Kc3RkOjp1bmlxdWVfcHRyPFQ+IGZvcndhcmRpbmdfcHJvYmxlbShBcmcxIGFyZzEpCQkJCQkvLyDRjdGC0L4g0L3QtSDQtNC+0LvQttC90L4g0LfQsNGA0LDQsdC+0YLQsNGC0Ywg0L3QsCDRgtC10YHRgtC+0LLQvtC8INC/0YDQuNC80LXRgNC1CnsJCQoJcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxUPihuZXcgVChhcmcxKSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFyZzE+CnN0ZDo6dW5pcXVlX3B0cjxUPiBmb3J3YXJkaW5nX3NvbHV0aW9uKEFyZzEmJiBhcmcxKQkJCQkJLy8g0Y3RgtC+INC/0YDQtdC00LvQsNCz0LDQtdGC0YHRjyDQutCw0Log0YDQtdGI0LXQvdC40LUsINC90L4g0L7QvdC+INC90LUg0L/QvtC90LDQtNC+0LHQuNC70L7RgdGMCnsKCXJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8VD4obmV3IFQoc3RkOjpmb3J3YXJkKGFyZzEpKSk7Cn0KCmNsYXNzIEQKewpwdWJsaWM6CglEKHN0ZDo6dmVjdG9yPGludD4qIHZlYykgOiB2eyB2ZWMgfSB7fQpwcml2YXRlOgoJc3RkOjp2ZWN0b3I8aW50PiogdjsKfTsKCnZvaWQgdGVzdCgpCnsKCWF1dG8gcG9pbnRlciA9IGZvcndhcmRpbmdfcHJvYmxlbTxEKj4obmV3IEQobmV3IHN0ZDo6dmVjdG9yPGludD57MCwwLDd9KSk7CQkvLyDQstC80LXRgdGC0L4g0L7RiNC40LHQutC4INC60L7QvNC/0LjQu9GP0YbQuNC4INCy0YHRkSDQvdC+0YDQvNCw0LvRjNC90L4g0LfQsNC/0YPRgdC60LDQtdGC0YHRjwp9CgppbnQgbWFpbigpIAp7Cgl0ZXN0KCk7CglyZXR1cm4gMDsKfQ==