[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Debian-med-packaging] C++ help needed for lamarc



Am Montag, den 04.12.2017, 17:52 +0100 schrieb Andreas Tille:
> Hi,
> 
> I intend to package lamarc[1] and hit the following C++ issue:
> 
> ...
> g++ -DHAVE_CONFIG_H -I. -I./config   -Wdate-time -D_FORTIFY_SOURCE=2
> -DLAMARC_COMPILE_LINUX     -DNDEBUG          -Wall -Wextra -Wno-
> unused -I ./config -I ./config -I ./src/bayeslike -I ./   src/control
> -I ./src/conversion -I ./src/convErr -I ./src/convModel -I
> ./src/convParse -I ./src/convStrings -I ./src/convUtil -I
> ./src/datalike -I ./src/force -I ./src/guiconv -I ./src/      guiutil
> -I ./src/lamarcmenus -I ./src/menu -I ./src/postlike -I ./src/report
> -I ./src/tools -I ./src/tree -I ./src/ui_interface -I ./src/ui_util
> -I ./src/ui_vars -I ./src/xml -I/usr/include/ boost -I ./resources
> -DTIXML_USE_STL -g -O2 -fdebug-prefix-map=/build/lamarc-2.1.10+dfsg=. 
> -fstack-protector-strong -Wformat -Werror=format-security -c -o
> lamarc-mathx.o `test -f 'src/tools/ mathx.cpp' || echo
> './'`src/tools/mathx.cpp
> src/tools/mathx.cpp: In member function
> ‘std::pair<std::vector<double>, std::vector<std::vector<double> > >
> EigenCalculator::Eigen(DoubleVec2d)’:
> src/tools/mathx.cpp:781:64: error: no matching function for call to
> ‘make_pair<DoubleVec1d, DoubleVec2d>(DoubleVec1d&, DoubleVec2d&)’
>      return make_pair<DoubleVec1d, DoubleVec2d>(eigvals, eigvecs);
>                                                                 ^
> In file included from /usr/include/c++/7/bits/stl_algobase.h:64:0,
>                  from /usr/include/c++/7/bits/char_traits.h:39,
>                  from /usr/include/c++/7/ios:40,
>                  from /usr/include/c++/7/ostream:38,
>                  from /usr/include/c++/7/iostream:39,
>                  from src/tools/mathx.cpp:13:
> /usr/include/c++/7/bits/stl_pair.h:519:5: note: candidate:
> template<class _T1, class _T2> constexpr std::pair<typename
> std::__decay_and_strip<_Tp>::__type, typename
> std::                     __decay_and_strip<_T2>::__type>
> std::make_pair(_T1&&, _T2&&)
>      make_pair(_T1&& __x, _T2&& __y)
>      ^~~~~~~~~
> /usr/include/c++/7/bits/stl_pair.h:519:5: note:   template argument
> deduction/substitution failed:
> src/tools/mathx.cpp:781:64: note:   cannot convert ‘eigvals’ (type
> ‘DoubleVec1d {aka std::vector<double>}’) to type
> ‘std::vector<double>&&’
>      return make_pair<DoubleVec1d, DoubleVec2d>(eigvals, eigvecs);

make_pair doesn't require the explicite type specification, i.e. the
following should work: 

- return make_pair<DoubleVec1d, DoubleVec2d>(eigvals, eigvecs);
+ return make_pair(eigvals, eigvecs);

Best, 
Gert 


Reply to: