title: Can I safely use OpenMP with C++11?
body: <p>The OpenMP standard only considers C++ 98 (ISO/IEC 14882:1998). This means that there is no standard supporting usage of OpenMP under C++03 or even C++11. Thus, any program that uses C++ >98 and OpenMP operates outside of standards, implying that even if it works under certain conditions, it's unlikely to be portable but definitely never guaranteed.</p>
  
  <p>The situation is even worse with C++11 with its own multi-threading support, which very likely will clash with OpenMP for certain implementations.</p>
  
  <p>So, how safe is it to use OpenMP with C++03 and C++11?</p>
  
  <p>Can one safely use C++11 multi-threading as well as OpenMP in one and the same program but without interleaving them (i.e. no OpenMP statement in any code passed to C++11 concurrent features and no C++11 concurrency in threads spawned by OpenMP)?</p>
  
  <p>I'm particularly interested in the situation where I first call some code using OpenMP and then some other code using C++11 concurrency on the same data structures.</p>