[Rcpp-devel] no matching function for call in mzR on Mac after Rcpp 0.11.0 update
Steffen Neumann
sneumann at ipb-halle.de
Fri Feb 7 09:42:21 CET 2014
Hi list,
sorry, it's me again.
I am having issues to build mzR on Mac (to which I have no access)
after the upgrade to Rcpp 0.11.0 on both
http://bioconductor.org/checkResults/2.13/bioc-LATEST/mzR/perceval-buildsrc.html
http://bioconductor.org/checkResults/2.14/bioc-LATEST/mzR/petty-buildsrc.html
with the same error message on both machines. Other builds are fine.
Those C++ error messages always scare the s**t out of me,
But then, the 100s of lines when a Java program throws
an exception are not better ...
The following is what I understood. The problem occurs in the three copy constructors
generated for the RcppRamp object in RcppRampModule.cpp[1]
Rcpp::S4_field<RcppRamp>::S4_field(const Rcpp::S4_field<RcppRamp>&),
and similar for
S4_CppOverloadedMethods(const Rcpp::S4_CppOverloadedMethods<RcppRamp>&)
and S4_CppConstructor(const Rcpp::S4_CppConstructor<RcppRamp>&).
In all cases, there is a call to Reference_Impl<Rcpp::PreserveStorage>::Reference_Impl()
for which the compiler can't find a matching function. What it offers are
implementations like Reference_Impl(const std::string&). The difference is
that the requested Reference_Impl() comes with no arguments (?!).
The call is made from Module.h:331 in the macro RCPP_CTOR_ASSIGN(S4_field)
(Would it help to define RCPP_DEBUG for some additional output ?)
Indeed, all three "no matching function"s seem to come from this macro:
grep RCPP_CTOR_ASSIGN ./include/Rcpp/*
./include/Rcpp/Module.h: RCPP_CTOR_ASSIGN(S4_CppConstructor)
./include/Rcpp/Module.h: RCPP_CTOR_ASSIGN(S4_CppOverloadedMethods)
./include/Rcpp/Module.h: RCPP_CTOR_ASSIGN(S4_field)
But unfortunately this is where I get lost. Since it works on other architectures,
<wildGuess>
it could be that on Mac "something" is #defined to be an empty string,
so that Reference_Impl() is called with an empty argument.
</wildGuess>
<disclaimer>
Of course, my last ventures into C++-land is more than a decade ago, so I could be waay off.
</disclaimer>
Any ideas here ?
Yours,
Steffen
[1] https://hedgehog.fhcrc.org/bioconductor/trunk/madman/Rpacks/mzR/src/RcppRampModule.cpp
-----------------------------------------------
llvm-g++-4.2 -arch x86_64 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -D_LARGEFILE_SOURCE -I./boost_aux/ -I. -DHAVE_PWIZ_MZML_LIB -D_NODEBUG -I/usr/local/include -I"/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include" -fPIC -mtune=core2 -g -O2 -c RcppRampModule.cpp -o RcppRampModule.o
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/Module.h: In copy constructor ‘Rcpp::S4_field<Class>::S4_field(const Rcpp::S4_field<Class>&) [with Class = RcppRamp]’:
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/module/class.h:416: instantiated from ‘Rcpp::List Rcpp::class_<Class>::fields(const Rcpp::XPtr<Rcpp::class_Base, Rcpp::PreserveStorage, void Rcpp::standard_delete_finalizer [with T = Rcpp::class_Base]>&) [with Class = RcppRamp]’
RcppRampModule.cpp:22: instantiated from here
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/Module.h:331: error: no matching function for call to ‘Rcpp::Reference_Impl<Rcpp::PreserveStorage>::Reference_Impl()’
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/Reference.h:56: note: candidates are: Rcpp::Reference_Impl<StoragePolicy>::Reference_Impl(const std::string&) [with StoragePolicy = Rcpp::PreserveStorage]
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/Reference.h:41: note: Rcpp::Reference_Impl<StoragePolicy>::Reference_Impl(SEXPREC*) [with StoragePolicy = Rcpp::PreserveStorage]
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/Reference.h:34: note: Rcpp::Reference_Impl<StoragePolicy>::Reference_Impl(const Rcpp::Reference_Impl<StoragePolicy>&) [with StoragePolicy = Rcpp::PreserveStorage]
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/Module.h: In copy constructor ‘Rcpp::S4_CppOverloadedMethods<Class>::S4_CppOverloadedMethods(const Rcpp::S4_CppOverloadedMethods<Class>&) [with Class = RcppRamp]’:
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/module/class.h:435: instantiated from ‘Rcpp::List Rcpp::class_<Class>::getMethods(const Rcpp::XPtr<Rcpp::class_Base, Rcpp::PreserveStorage, void Rcpp::standard_delete_finalizer [with T = Rcpp::class_Base]>&, std::string&) [with Class = RcppRamp]’
RcppRampModule.cpp:22: instantiated from here
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/Module.h:256: error: no matching function for call to ‘Rcpp::Reference_Impl<Rcpp::PreserveStorage>::Reference_Impl()’
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/Reference.h:56: note: candidates are: Rcpp::Reference_Impl<StoragePolicy>::Reference_Impl(const std::string&) [with StoragePolicy = Rcpp::PreserveStorage]
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/Reference.h:41: note: Rcpp::Reference_Impl<StoragePolicy>::Reference_Impl(SEXPREC*) [with StoragePolicy = Rcpp::PreserveStorage]
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/Reference.h:34: note: Rcpp::Reference_Impl<StoragePolicy>::Reference_Impl(const Rcpp::Reference_Impl<StoragePolicy>&) [with StoragePolicy = Rcpp::PreserveStorage]
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/Module.h: In copy constructor ‘Rcpp::S4_CppConstructor<Class>::S4_CppConstructor(const Rcpp::S4_CppConstructor<Class>&) [with Class = RcppRamp]’:
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/module/class.h:446: instantiated from ‘Rcpp::List Rcpp::class_<Class>::getConstructors(const Rcpp::XPtr<Rcpp::class_Base, Rcpp::PreserveStorage, void Rcpp::standard_delete_finalizer [with T = Rcpp::class_Base]>&, std::string&) [with Class = RcppRamp]’
RcppRampModule.cpp:22: instantiated from here
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/Module.h:218: error: no matching function for call to ‘Rcpp::Reference_Impl<Rcpp::PreserveStorage>::Reference_Impl()’
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/Reference.h:56: note: candidates are: Rcpp::Reference_Impl<StoragePolicy>::Reference_Impl(const std::string&) [with StoragePolicy = Rcpp::PreserveStorage]
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/Reference.h:41: note: Rcpp::Reference_Impl<StoragePolicy>::Reference_Impl(SEXPREC*) [with StoragePolicy = Rcpp::PreserveStorage]
/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include/Rcpp/Reference.h:34: note: Rcpp::Reference_Impl<StoragePolicy>::Reference_Impl(const Rcpp::Reference_Impl<StoragePolicy>&) [with StoragePolicy = Rcpp::PreserveStorage]
--
IPB Halle AG Massenspektrometrie & Bioinformatik
Dr. Steffen Neumann http://www.IPB-Halle.DE
Weinberg 3 http://msbi.bic-gh.de
06120 Halle Tel. +49 (0) 345 5582 - 1470
+49 (0) 345 5582 - 0
sneumann(at)IPB-Halle.DE Fax. +49 (0) 345 5582 - 1409
More information about the Rcpp-devel
mailing list