std::make_unique in der Initialisierungsliste
-
Ich verstehe diese Fehlermeldung nicht und würde gerne wissen, was mir der Kompiler hier sagen möchte, warum darf ich hier nicht make_unique verwenden? - hier der Quellencode:
#include <iostream> #include <memory> class Foo { public: Foo() : bar(std::make_unique<int>(new int(12))) { } private: std::unique_ptr<int> bar; }; int main() { Foo(); }
Ich bekomme diese Fehlermeldung:
In file included from /usr/include/c++/5.3.0/memory:81:0, from main.cpp:2: /usr/include/c++/5.3.0/bits/unique_ptr.h: In instantiation of ‘typename std::_MakeUniq<_Tp>::__single_object std::make_unique(_Args&& ...) [with _Tp = int; _Args = {int*}; typename std::_MakeUniq<_Tp>::__single_object = std::unique_ptr<int>]’: main.cpp:8:43: required from here /usr/include/c++/5.3.0/bits/unique_ptr.h:765:69: error: invalid conversion from ‘int*’ to ‘int’ [-fpermissive] { return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); } ^
-
make_unique und new?
-
Ich bin so ein Depp, jetzt macht die Fehlermeldung auch Sinn, danke...