Hey Stefan,

I've taken a look at the g++4-.8 build error on Ubuntu-14.04 you reported.
Turns out I don't need a 14.04 docker containe rto reproduce this, my 
Ubuntu-15.04
also ships g++-4.8.real (Ubuntu 4.8.4-1ubuntu15) 4.8.4.

It looks like g++-4.8 has problems with C++11 "delegate constructors", even 
though g++-4.7
should already have gotten full support: https://gcc.gnu.org/projects/cxx0x.html

Attached is a stupid workaround that compiles rcore/aida.cc.

I've not looked further though, so additional build errors may or may not 
happen.

I'm happy to take patches for an additional 15.09.x release if someone's 
willing to put in the work to make things compile with g++-4.8.

For 15.10 or anything later, we'll simply update the g++ dependency to g++-4.9.

To be honest, I'd much rather see time being spent to support clang++-3.7 
compilation, as that opens up a new range of development tools for Rapicorn.

Special tip: To get clang++-3.7 build on Ubuntu-14.04, simply build cling:
  https://root.cern.ch/cling-build-instructions
Cling is a C++ interpreter from cern, e.g. here it's demoed with OpenGL:
    https://www.youtube.com/watch?v=eoIuqLNvzFs
Cling automatically builds clang++-3.7 and the nightly images should support 
Ubuntu-14.04:
  https://ecsft.cern.ch/dist/cling/current/


PS: Thanks for your report, please CC the mailing list in the future.

-- 
Yours sincerely,
Tim Janik

https://testbit.eu/timj/
Free software author and speaker.

diff --git rcore/aida.cc rcore/aida.cc
index ca69e5f..42b8de9 100644
--- rcore/aida.cc
+++ rcore/aida.cc
@@ -322,13 +322,13 @@ ImplicitBase::~ImplicitBase()
 RAPICORN_STATIC_ASSERT (sizeof (std::string) <= sizeof (Any)); // assert big enough Any impl
 
 Any::Any (const Any &clone) :
-  Any()
+  Any (Fix1())
 {
   this->operator= (clone);
 }
 
 Any::Any (Any &&other) :
-  Any()
+  Any (Fix1())
 {
   this->swap (other);
 }
diff --git rcore/aida.hh rcore/aida.hh
index b77ca2f..54a07aa 100644
--- rcore/aida.hh
+++ rcore/aida.hh
@@ -204,6 +204,7 @@ public:
 
 
 // == Any Type ==
+struct Fix1 {};
 class Any /// Generic value type that can hold values of all other types.
 {
   ///@cond
@@ -275,13 +276,13 @@ private:
   void    rekind  (TypeKind _kind);
 public:
   /*dtor*/ ~Any    ();                                  ///< Any destructor.
-  explicit  Any    ();                                  ///< Default initialize Any with no type.
+  explicit  Any    (const Fix1 &f = Fix1());            ///< Default initialize Any with no type.
   /// Initialize Any from a @a anany which is of Any or derived type.
   template<class V, REQUIRES< ::std::is_base_of< Any, typename std::remove_reference<V>::type >::value > = true> inline
-  explicit  Any (V &&anany) : Any()     { this->operator= (::std::forward<V> (anany)); }
+  explicit  Any (V &&anany) : Any (Fix1())     { this->operator= (::std::forward<V> (anany)); }
   /// Initialize Any and set its contents from @a value.
   template<class V, REQUIRES< !::std::is_base_of< Any, typename std::remove_reference<V>::type >::value > = true> inline
-  explicit  Any    (V &&value) : Any()  { set (::std::forward<V> (value)); }
+  explicit  Any    (V &&value) : Any (Fix1())  { set (::std::forward<V> (value)); }
   /*copy*/  Any    (const Any &clone);                  ///< Copy constructor.
   /*move*/  Any    (Any &&other);                       ///< Move constructor.
   Any& operator=   (const Any &clone);                  ///< Set @a this Any to a copy of @a clone.
@@ -755,7 +756,7 @@ struct ProtoScopeDisconnect : ProtoScope {
 
 // == inline implementations ==
 inline
-Any::Any() :
+Any::Any (const Fix1&) :
   type_kind_ (UNTYPED), u_ {0}
 {}
 
_______________________________________________
beast mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/beast

Reply via email to