[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