Implementation suggests that it's C++20 compatible here:
|
* This wrapper relies on std::atomic for C++20, a mutex for gcc 4.8, and |
However, if the project is built with
set(CMAKE_CXX_STANDARD 20)
Then the build is broken here:
|
opentelemetry::sdk::AtomicSharedPtr<SpanProcessor> processor_; |
With the following error:
[ 50%] Building CXX object sdk/src/trace/CMakeFiles/opentelemetry_trace.dir/tracer_provider.cc.o
In file included from /mnt/c/work/opentelemetry-cpp/sdk/include/opentelemetry/sdk/common/atomic_shared_ptr.h:3,
from /mnt/c/work/opentelemetry-cpp/sdk/include/opentelemetry/sdk/trace/tracer.h:3,
from /mnt/c/work/opentelemetry-cpp/sdk/include/opentelemetry/sdk/trace/tracer_provider.h:9,
from /mnt/c/work/opentelemetry-cpp/sdk/src/trace/tracer_provider.cc:1:
/usr/include/c++/9/atomic: In instantiation of ‘struct std::atomic<std::shared_ptr<opentelemetry::v0::sdk::trace::SpanProcessor> >’:
/mnt/c/work/opentelemetry-cpp/sdk/include/opentelemetry/sdk/common/atomic_shared_ptr.h:33:35: required from ‘class opentelemetry::v0::sdk::AtomicSharedPtr<opentelemetry::v0::sdk::trace::SpanProcessor>’
/mnt/c/work/opentelemetry-cpp/sdk/include/opentelemetry/sdk/trace/tracer.h:47:54: required from here
/usr/include/c++/9/atomic:191:21: error: static assertion failed: std::atomic requires a trivially copyable type
191 | static_assert(__is_trivially_copyable(_Tp),
Implementation suggests that it's C++20 compatible here:
opentelemetry-cpp/sdk/include/opentelemetry/sdk/common/atomic_shared_ptr.h
Line 14 in 9e5924c
However, if the project is built with
Then the build is broken here:
opentelemetry-cpp/sdk/include/opentelemetry/sdk/trace/tracer.h
Line 47 in 9e5924c
With the following error: