diff --git a/dune/common/stdthread.cc b/dune/common/stdthread.cc index 11e54bfeae351213967a21de0f43973604d4614c..c0bfbb19f96224b66101986413818f17d3bb3078 100644 --- a/dune/common/stdthread.cc +++ b/dune/common/stdthread.cc @@ -30,15 +30,20 @@ namespace Dune << msg << std::endl; } - } // anonymous namespace + void setBool(bool *v) + { + *v = true; + } + } // anonymous namespace void doAssertCallOnce(const char *file, int line, const char *function) { std::once_flag once; bool works = false; try { - std::call_once(once, [&]{ works = true; }); + // pass address to works since call_once passes by value + std::call_once(once, setBool, &works); } catch(...) { printCallOnceError(file, line, function, diff --git a/dune/common/stdthread.hh b/dune/common/stdthread.hh index 3a922b86b9c9e440b4d4e7a8eeddd95803dcc056..9307960f08ef35eba9c806469767b32e49421c58 100644 --- a/dune/common/stdthread.hh +++ b/dune/common/stdthread.hh @@ -4,6 +4,7 @@ #ifndef DUNE_COMMON_STDTHREAD_HH #define DUNE_COMMON_STDTHREAD_HH +#include <dune/common/nullptr.hh> #include <dune/common/unused.hh> namespace Dune