Fix compilation with GCC 6.x (C++14 as default standard). Remove throw specificator from function declaration when compilation is performed with standard >= C++11. Adds one cast to argument in C++11, C++14. Gentoo bug: https://bugs.gentoo.org/show_bug.cgi?id=593928 --- a/cult/cli/file-arguments.hxx +++ b/cult/cli/file-arguments.hxx @@ -46,8 +46,12 @@ { if (i >= size ()) throw Bounds (); - - args_.erase (args_.begin () + i); + +#if __cplusplus < 201103L + args_.erase (args_.begin() + i); +#else + args_.erase ((Containers::Vector::ConstIterator)(args_.begin () + i)); +#endif } private: --- a/cult/mm/new.cxx +++ b/cult/mm/new.cxx @@ -140,7 +140,12 @@ using namespace Cult; Void* -operator new (Size s) throw (MM::StdBadAlloc) +operator new (Size s) +#if __cplusplus < 201103L +throw (MM::StdBadAlloc) +#else +noexcept(false) +#endif { return MM::allocate (s, *MM::counted); } --- a/cult/mm/new.hxx +++ b/cult/mm/new.hxx @@ -255,7 +255,13 @@ } Cult::Void* -operator new (Cult::Size) throw (Cult::MM::StdBadAlloc); +operator new (Cult::Size) +#if __cplusplus < 201103L +throw (Cult::MM::StdBadAlloc) +#else +noexcept(false) +#endif +; Cult::Void* operator new (Cult::Size, --- a/cult/sched/condition.cxx +++ b/cult/sched/condition.cxx @@ -12,6 +12,9 @@ { Condition:: ~Condition () +#if __cplusplus >= 201103L + noexcept(false) +#endif { if (Int e = pthread_cond_destroy (&cond_)) throw Implementation (e); --- a/cult/sched/condition.hxx +++ b/cult/sched/condition.hxx @@ -19,7 +19,11 @@ class Condition: public NonCopyable { public: - ~Condition (); + ~Condition () +#if __cplusplus >= 201103L + noexcept(false) +#endif + ; Condition (Mutex& mutex); --- a/cult/sched/mutex.cxx +++ b/cult/sched/mutex.cxx @@ -12,6 +12,9 @@ { Mutex:: ~Mutex () +#if __cplusplus >= 201103L + noexcept(false) +#endif { if (Int e = pthread_mutex_destroy (&mutex_)) throw Implementation (e); --- a/cult/sched/mutex.hxx +++ b/cult/sched/mutex.hxx @@ -17,7 +17,11 @@ class Mutex: public NonCopyable { public: - ~Mutex (); + ~Mutex () +#if __cplusplus >= 201103L + noexcept(false) +#endif + ; Mutex (); --- a/cult/sched/spin.cxx +++ b/cult/sched/spin.cxx @@ -12,6 +12,9 @@ { Spin:: ~Spin () +#if __cplusplus >= 201103L + noexcept(false) +#endif { if (Int e = pthread_spin_destroy (&spin_)) throw Implementation (e); --- a/cult/sched/spin.hxx +++ b/cult/sched/spin.hxx @@ -17,7 +17,11 @@ class Spin: public NonCopyable { public: - ~Spin (); + ~Spin () +#if __cplusplus >= 201103L + noexcept(false) +#endif + ; Spin (); --- a/cult/sched/thread.cxx +++ b/cult/sched/thread.cxx @@ -196,6 +196,9 @@ Thread:: ~Thread () +#if __cplusplus >= 201103L + noexcept(false) +#endif { tout << "thread is being destroyed."; --- a/cult/sched/thread.hxx +++ b/cult/sched/thread.hxx @@ -30,7 +30,11 @@ public: virtual - ~Thread (); + ~Thread () +#if __cplusplus >= 201103L + noexcept(false) +#endif + ; Thread (Void* (*StartRoutine) (Void*), Void* arg = 0);