Dear all,

The current version of my RNiftyReg package is failing to compile on CRAN's
Solaris testbed, but I don't have access to a Solaris system to debug on,
and Googling the error hasn't been very helpful. The error is

CC -library=stlport4 -I/home/ripley/R/cc/include -DNDEBUG -DNDEBUG
-DRNIFTYREG -I/usr/local/include    -KPIC  -O -xlibmil -xtarget=native
-nofstore  -c niftyreg.cpp -o niftyreg.o
"_reg_f3d_sym.cpp", line 25: Error: reg_f3d may not have a type qualifier.
"niftyreg.cpp", line 527:     Where: While instantiating
"reg_f3d_sym<double>::reg_f3d_sym(int, int)".
"niftyreg.cpp", line 527:     Where: Instantiated from non-template code.
"_reg_f3d_sym.cpp", line 26: Error: reg_f3d<T> cannot be initialized
in a constructor.
"niftyreg.cpp", line 527:     Where: While instantiating
"reg_f3d_sym<double>::reg_f3d_sym(int, int)".
"niftyreg.cpp", line 527:     Where: Instantiated from non-template code.
"_reg_f3d_sym.cpp", line 26: Error: Could not find
reg_f3d<double>::reg_f3d() to initialize base class.
"niftyreg.cpp", line 527:     Where: While instantiating
"reg_f3d_sym<double>::reg_f3d_sym(int, int)".
"niftyreg.cpp", line 527:     Where: Instantiated from non-template code.
3 Error(s) detected.
*** Error code 2
make: Fatal error: Command failed for target `niftyreg.o'


(Full log at [1].) The relevant part of the source is a C++ class
constructor, part of the library that my package interfaces to:

template <class T>
reg_f3d_sym<T>::reg_f3d_sym(int refTimePoint,int floTimePoint)
    :reg_f3d<T>::reg_f3d(refTimePoint,floTimePoint)
{
    this->executableName=(char *)"NiftyReg F3D SYM";

    this->backwardControlPointGrid=NULL;
    this->backwardWarped=NULL;
    this->backwardWarpedGradientImage=NULL;
    this->backwardDeformationFieldImage=NULL;
    this->backwardVoxelBasedMeasureGradientImage=NULL;
    this->backwardNodeBasedGradientImage=NULL;

    this->backwardBestControlPointPosition=NULL;
    this->backwardConjugateG=NULL;
    this->backwardConjugateH=NULL;

    this->backwardProbaJointHistogram=NULL;
    this->backwardLogJointHistogram=NULL;

    this->floatingMaskImage=NULL;
    this->currentFloatingMask=NULL;
    this->floatingMaskPyramid=NULL;
    this->backwardActiveVoxelNumber=NULL;

    this->inverseConsistencyWeight=0.1;

#ifndef NDEBUG
    printf("[NiftyReg DEBUG] reg_f3d_sym constructor called\n");
#endif
}

The error does not occur on any Windows, Linux or OS X system which I have
access to, so this would seem to be an issue relating to the Solaris
compiler toolchain in particular. Can anyone shed any light on it, please?

Thanks in advance,
Jon

--
[1]
http://www.r-project.org/nosvn/R.check/r-patched-solaris-x86/RNiftyReg-00install.html

	[[alternative HTML version deleted]]

