With new g++, build process fails in folder basecode.
~~~~~~~~~~~~
In file included from header.h:104:0,
from Cinfo.cpp:10:
Conv.h: In instantiation of ‘class Conv<Finfo>’:
FieldElementFinfo.h:146:29: required from ‘std::string FieldElementFinfo<T, F="">::rttiType() const [with T = Cinfo; F = Finfo; std::string = std::basic_string<char>]’
Cinfo.cpp:588:1: required from here
Conv.h:72:11: error: cannot allocate an object of abstract type ‘Finfo’
const T operator() const {
^
In file included from header.h:83:0,
from Cinfo.cpp:10:
Finfo.h:14:7: note: because the following virtual functions are pure within ‘Finfo’:
class Finfo
^
Finfo.h:34:16: note: virtual void Finfo::registerFinfo(Cinfo)
virtual void registerFinfo( Cinfo* c ) = 0;
^
Finfo.h:41:16: note: virtual bool Finfo::strSet(const Eref&, const string&, const string&) const
virtual bool strSet( const Eref& tgt, const string& field,
^
Finfo.h:49:16: note: virtual bool Finfo::strGet(const Eref&, const string&, std::string&) const
virtual bool strGet( const Eref& tgt, const string& field,
~~~~~~~~~
Class Finfo contains virtual functions therefore is being treated as an abstract class. gcc 4.8 complains that it can not be instantiated. It may be a bug with gcc4.8.
This version of gcc is default compiler on opensuse and centos.
Anonymous
This seems to be a problem with gcc and C++ standard: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58923
Last edit: Subhasis Ray 2014-04-03
This seems to be a bug with gcc 4.8/C++ standard http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58923. A workaround is to install an older g++ (4.7 for example) and update main Makefile replace CXX=g++ with CXX=g++-4.7 before building.