I've gotten gcc 7.0 installed now and have tried 2 different ways
to get this working. Neither of them has worked.
One way has this:
::std::unique_ptr request(cmw_request(localbuf));
As line 302 in this file
https://github.com/Ebenezer-group/onwards/blob/master/cmwAmbassador.cc
g++7 -o cmwAmbassador -std=c++1z -O2 -Wshadow -Wundef -Wreorder -W -Wall -Wextra -s cmwAmbassador.cc libhome.a
cmwAmbassador.cc: In constructor 'cmwAmbassador::cmwAmbassador(const char*)':
cmwAmbassador.cc:302:9: error: deduced class type 'unique_ptr' in function return type
::std::unique_ptr request(cmw_request(localbuf));
^~
In file included from /usr/local/lib/gcc7/include/c++/memory:80:0,
from cmwAmbassador.cc:28:
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:153:11: note: 'template<class _Tp, class _Dp> class std::unique_ptr' declared here
class unique_ptr
^~~~~~~~~~
cmwAmbassador.cc:303:59: error: use of 'unique_ptr request(cmw_request)' before deduction of 'auto'
middle_messages_back::Marshal(cmwSendbuf,Generate,request->accountNbr
^~~~~~~
cmwAmbassador.cc:304:58: error: use of 'unique_ptr request(cmw_request)' before deduction of 'auto'
,request_generator(request->filename),500000);
^~~~~~~
cmwAmbassador.cc:305:9: error: use of 'unique_ptr request(cmw_request)' before deduction of 'auto'
request->latest_update=current_updatedtime;
^~~~~~~
cmwAmbassador.cc:306:9: error: use of 'unique_ptr request(cmw_request)' before deduction of 'auto'
request->front_tier=front;
^~~~~~~
cmwAmbassador.cc:307:46: error: use of 'unique_ptr request(cmw_request)' before deduction of 'auto'
pendingTransactions.push(::std::move(request));
^~~~~~~
*** Error code 1
And the other way is with a 'new' added:
::std::unique_ptr request(new cmw_request(localbuf));
g++7 -o cmwAmbassador -std=c++1z -O2 -Wshadow -Wundef -Wreorder -W -Wall -Wextra -s cmwAmbassador.cc libhome.a
cmwAmbassador.cc: In constructor 'cmwAmbassador::cmwAmbassador(const char*)':
cmwAmbassador.cc:302:60: error: no matching function for call to 'std::unique_ptr(cmw_request*)'
::std::unique_ptr request(new cmw_request(localbuf));
^
In file included from /usr/local/lib/gcc7/include/c++/memory:80:0,
from cmwAmbassador.cc:28:
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:376:7: note: candidate: template<class _Tp, class _Dp> std::unique_ptr(const std::unique_ptr<_Tp, _Dp>&)-> std::unique_ptr<_Tp, _Dp>
unique_ptr(const unique_ptr&) = delete;
^~~~~~~~~~
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:376:7: note: template argument deduction/substitution failed:
cmwAmbassador.cc:302:60: note: mismatched types 'const std::unique_ptr<_Tp, _Dp>' and 'cmw_request*'
::std::unique_ptr request(new cmw_request(localbuf));
^
In file included from /usr/local/lib/gcc7/include/c++/memory:84:0,
from cmwAmbassador.cc:28:
/usr/local/lib/gcc7/include/c++/backward/auto_ptr.h:326:5: note: candidate: template<class _Tp, class _Dp, class _Up, class> std::unique_ptr(std::auto_ptr<_Up>&&)-> std::unique_ptr<_Tp, _Dp>
unique_ptr<_Tp, _Dp>::unique_ptr(auto_ptr<_Up>&& __u) noexcept
^~~~~~~~~~~~~~~~~~~~
/usr/local/lib/gcc7/include/c++/backward/auto_ptr.h:326:5: note: template argument deduction/substitution failed:
cmwAmbassador.cc:302:60: note: mismatched types 'std::auto_ptr<_Up>' and 'cmw_request*'
::std::unique_ptr request(new cmw_request(localbuf));
^
In file included from /usr/local/lib/gcc7/include/c++/memory:80:0,
from cmwAmbassador.cc:28:
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:240:2: note: candidate: template<class _Tp, class _Dp, class _Up, class _Ep, class> std::unique_ptr(std::unique_ptr<_Up, _Ep>&&)-> std::unique_ptr<_Tp, _Dp>
unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept
^~~~~~~~~~
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:240:2: note: template argument deduction/substitution failed:
cmwAmbassador.cc:302:60: note: mismatched types 'std::unique_ptr<_Up, _Ep>' and 'cmw_request*'
::std::unique_ptr request(new cmw_request(localbuf));
^
In file included from /usr/local/lib/gcc7/include/c++/memory:80:0,
from cmwAmbassador.cc:28:
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:226:7: note: candidate: template<class _Tp, class _Dp> std::unique_ptr(std::unique_ptr<_Tp, _Dp>&&)-> std::unique_ptr<_Tp, _Dp>
unique_ptr(unique_ptr&& __u) noexcept
^~~~~~~~~~
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:226:7: note: template argument deduction/substitution failed:
cmwAmbassador.cc:302:60: note: mismatched types 'std::unique_ptr<_Tp, _Dp>' and 'cmw_request*'
::std::unique_ptr request(new cmw_request(localbuf));
^
In file included from /usr/local/lib/gcc7/include/c++/memory:80:0,
from cmwAmbassador.cc:28:
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:221:17: note: candidate: template<class _Tp, class _Dp> std::unique_ptr(std::nullptr_t)-> std::unique_ptr<_Tp, _Dp>
constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { }
^~~~~~~~~~
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:221:17: note: template argument deduction/substitution failed:
cmwAmbassador.cc:302:60: note: couldn't deduce template parameter '_Tp'
::std::unique_ptr request(new cmw_request(localbuf));
^
In file included from /usr/local/lib/gcc7/include/c++/memory:80:0,
from cmwAmbassador.cc:28:
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:214:7: note: candidate: template<class _Tp, class _Dp> std::unique_ptr(std::unique_ptr<_Tp, _Dp>::pointer, typename std::remove_reference<_To>::type&&)-> std::unique_ptr<_Tp, _Dp>
unique_ptr(pointer __p,
^~~~~~~~~~
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:214:7: note: template argument deduction/substitution failed:
cmwAmbassador.cc:302:60: note: candidate expects 2 arguments, 1 provided
::std::unique_ptr request(new cmw_request(localbuf));
^
In file included from /usr/local/lib/gcc7/include/c++/memory:80:0,
from cmwAmbassador.cc:28:
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:202:7: note: candidate: template<class _Tp, class _Dp> std::unique_ptr(std::unique_ptr<_Tp, _Dp>::pointer, typename std::conditional<std::is_reference<_Dp>::value, _Dp, const _Dp&>::type)-> std::unique_ptr<_Tp, _Dp>
unique_ptr(pointer __p,
^~~~~~~~~~
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:202:7: note: template argument deduction/substitution failed:
cmwAmbassador.cc:302:60: note: candidate expects 2 arguments, 1 provided
::std::unique_ptr request(new cmw_request(localbuf));
^
In file included from /usr/local/lib/gcc7/include/c++/memory:80:0,
from cmwAmbassador.cc:28:
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:190:7: note: candidate: template<class _Tp, class _Dp> std::unique_ptr(std::unique_ptr<_Tp, _Dp>::pointer)-> std::unique_ptr<_Tp, _Dp>
unique_ptr(pointer __p) noexcept
^~~~~~~~~~
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:190:7: note: template argument deduction/substitution failed:
cmwAmbassador.cc:302:60: note: couldn't deduce template parameter '_Tp'
::std::unique_ptr request(new cmw_request(localbuf));
^
In file included from /usr/local/lib/gcc7/include/c++/memory:80:0,
from cmwAmbassador.cc:28:
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:178:17: note: candidate: template<class _Tp, class _Dp> std::unique_ptr()-> std::unique_ptr<_Tp, _Dp>
constexpr unique_ptr() noexcept
^~~~~~~~~~
/usr/local/lib/gcc7/include/c++/bits/unique_ptr.h:178:17: note: template argument deduction/substitution failed:
cmwAmbassador.cc:302:60: note: candidate expects 0 arguments, 1 provided
::std::unique_ptr request(new cmw_request(localbuf));
^
*** Error code 1
I'd guess the approach with the 'new' is more correct than the
first approach, but not 100% sure. I'm not sure if there's a
third approach that I'm missing or if the compiler at fault.