gaiustech/cohml

Build error

Closed this issue · 1 comments

Using 64bit kubuntu 14 on lenovo x1 carbon hardware, coherence 3.7.1, ocaml 4.0.2.1 via opam:

carm@ultima:~/workspace/cohml$ make
ocamlc -ccopt -xc++ -ccopt -g3 -c -o message.o -ccopt -I/opt/coherence-cpp/include -ccopt -L/opt/coherence-cpp/lib -ccopt -lcoherence -ccopt -DOCAML_VERSION_MINOR=`ocamlopt -version | cut -f2 -d.` message.c
In file included from /opt/coherence-cpp/include/coherence/lang/Object.hpp:21:0,
                 from /opt/coherence-cpp/include/coherence/lang/interface_spec.hpp:22,
                 from /opt/coherence-cpp/include/coherence/lang/HeapAnalyzer.hpp:19,
                 from /opt/coherence-cpp/include/coherence/lang/AbstractHeapAnalyzer.hpp:23,
                 from /opt/coherence-cpp/include/coherence/lang.ns:27,
                 from cohml.h:8,
                 from message.c:14:
/opt/coherence-cpp/include/coherence/lang/cloneable_spec.hpp: In instantiation of ‘coherence::lang::TypedHandle<coherence::lang::Object> coherence::lang::cloneable_spec<T, E, I>::clone() const [with T = coherence::lang::Object; E = coherence::lang::extends<coherence::lang::Void<>, coherence::lang::Void<> >; I = coherence::lang::implements<>]’:
message.c:148:1:   required from here
/opt/coherence-cpp/include/coherence/lang/cloneable_spec.hpp:114:55: error: ‘create’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
             return create(static_cast<const T&>(*this));
                                                       ^
/opt/coherence-cpp/include/coherence/lang/cloneable_spec.hpp:114:55: note: declarations in dependent base ‘coherence::lang::class_spec<coherence::lang::Object, coherence::lang::extends<coherence::lang::Void<>, coherence::lang::Void<> >, coherence::lang::implements<> >’ are not found by unqualified lookup
/opt/coherence-cpp/include/coherence/lang/cloneable_spec.hpp:114:55: note: use ‘this->create’ instead
make: *** [message.o] Error 2

I fixed this via

/include/coherence/lang/cloneable_spec.hpp
114c114
<             return create(static_cast<const T&>(*this));
---
>             return this->create(static_cast<const T&>(*this));