-
Notifications
You must be signed in to change notification settings - Fork 496
Closed
Labels
bugSomething isn't workingSomething isn't workingtriage/acceptedIndicates an issue or PR is ready to be actively worked on.Indicates an issue or PR is ready to be actively worked on.
Description
Describe your environment
- Library: opentelemetry-cpp
- Version: 1.21.0
- Component: OTLP Logger
- Compiler: Microsoft Visual C++
- Build Environment: Using strict compiler flags that treat warnings as errors.
Steps to reproduce
- Set up a project using opentelemetry-cpp v1.21.0.
- Create a C++ source file that includes the logger provider header, following the official example code.
#include "opentelemetry/logs/provider.h"
int main()
{
// The warning is triggered by the include directive alone.
return 0;
}
- Compile the code.
What is the expected behavior?
The code should compile cleanly without any warnings, as no deprecated functionality is being explicitly used.
What is the actual behavior?
Including the <opentelemetry/logs/provider.h>
header file results in a compiler warning, even if no deprecated symbols are used in the code.
The specific warning is:
warning C4996: 'opentelemetry::v1::logs::EventLogger::~EventLogger': was declared deprecated
Additional context
This issue is problematic in environments where compiler warnings are treated as errors, causing the build to fail. A temporary workaround is to use macros to suppress the C4996 warning around the include directive, but a permanent fix is needed.
The full error log is:
C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1190,9): warning C4996: 'opentelemetry::v1::logs::EventLogger::~EventLogger': was declared deprecated
1>(compiling source file '[...]/OpenTelemetryLogger.cpp')
1> C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1190,9):
1> the template instantiation context (the oldest one first) is
1> [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\logs\noop.h(126,34):
1> see reference to class template instantiation 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLogger>' being compiled
1> [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\nostd\shared_ptr.h(84,3):
1> while compiling class template member function 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLogger>::shared_ptr(opentelemetry::v1::logs::EventLogger *)'
1> [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\logs\noop.h(115,75):
1> see the first reference to 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLogger>::shared_ptr' in 'opentelemetry::v1::logs::NoopEventLoggerProvider::NoopEventLoggerProvider'
1> [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\nostd\shared_ptr.h(86,28):
1> see reference to function template instantiation 'std::shared_ptr<T>::shared_ptr<opentelemetry::v1::logs::EventLogger,0>(_Ux *)' being compiled
1> with
1> [
1> T=opentelemetry::v1::logs::EventLogger,
1> _Ux=opentelemetry::v1::logs::EventLogger
1> ]
1> C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1584,61):
1> see reference to class template instantiation 'std::_Ref_count<opentelemetry::v1::logs::EventLogger>' being compiled
1> C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1189,10):
1> while compiling class template member function 'void std::_Ref_count<opentelemetry::v1::logs::EventLogger>::_Destroy(void) noexcept'
1>C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1525,9): warning C4996: 'opentelemetry::v1::logs::EventLogger::~EventLogger': was declared deprecated
1>(compiling source file '[...]/OpenTelemetryLogger.cpp')
1> C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1525,9):
1> the template instantiation context (the oldest one first) is
1> C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1583,35):
1> see reference to class template instantiation 'std::_Temporary_owner<opentelemetry::v1::logs::EventLogger>' being compiled
1> C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1524,6):
1> while compiling class template member function 'std::_Temporary_owner<opentelemetry::v1::logs::EventLogger>::~_Temporary_owner(void)'
1> C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1583,41):
1> see the first reference to 'std::_Temporary_owner<opentelemetry::v1::logs::EventLogger>::~_Temporary_owner' in 'std::shared_ptr<T>::shared_ptr'
1> with
1> [
1> T=opentelemetry::v1::logs::EventLogger
1> ]
1> [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\nostd\shared_ptr.h(86,28):
1> see the first reference to 'std::shared_ptr<T>::shared_ptr' in 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLogger>::shared_ptr'
1> with
1> [
1> T=opentelemetry::v1::logs::EventLogger
1> ]
1> [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\logs\noop.h(115,75):
1> see the first reference to 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLogger>::shared_ptr' in 'opentelemetry::v1::logs::NoopEventLoggerProvider::NoopEventLoggerProvider'
1>C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1190,9): warning C4996: 'opentelemetry::v1::logs::EventLoggerProvider::~EventLoggerProvider': was declared deprecated
1>(compiling source file '[...]/OpenTelemetryLogger.cpp')
1> C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1190,9):
1> the template instantiation context (the oldest one first) is
1> [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\logs\provider.h(58,3):
1> see reference to class template instantiation 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLoggerProvider>' being compiled
1> [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\nostd\shared_ptr.h(84,3):
1> while compiling class template member function 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLoggerProvider>::shared_ptr(opentelemetry::v1::logs::EventLoggerProvider *)'
1> [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\logs\provider.h(87,59):
1> see the first reference to 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLoggerProvider>::shared_ptr' in 'opentelemetry::v1::logs::Provider::GetEventProvider'
1> [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\nostd\shared_ptr.h(86,28):
1> see reference to function template instantiation 'std::shared_ptr<T>::shared_ptr<opentelemetry::v1::logs::EventLoggerProvider,0>(_Ux *)' being compiled
1> with
1> [
1> T=opentelemetry::v1::logs::EventLoggerProvider,
1> _Ux=opentelemetry::v1::logs::EventLoggerProvider
1> ]
1> C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1584,61):
1> see reference to class template instantiation 'std::_Ref_count<opentelemetry::v1::logs::EventLoggerProvider>' being compiled
1> C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1189,10):
1> while compiling class template member function 'void std::_Ref_count<opentelemetry::v1::logs::EventLoggerProvider>::_Destroy(void) noexcept'
1>C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1525,9): warning C4996: 'opentelemetry::v1::logs::EventLoggerProvider::~EventLoggerProvider': was declared deprecated
1>(compiling source file '[...]/OpenTelemetryLogger.cpp')
1> C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1525,9):
1> the template instantiation context (the oldest one first) is
1> C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1583,35):
1> see reference to class template instantiation 'std::_Temporary_owner<opentelemetry::v1::logs::EventLoggerProvider>' being compiled
1> C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1524,6):
1> while compiling class template member function 'std::_Temporary_owner<opentelemetry::v1::logs::EventLoggerProvider>::~_Temporary_owner(void)'
1> C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1583,41):
1> see the first reference to 'std::_Temporary_owner<opentelemetry::v1::logs::EventLoggerProvider>::~_Temporary_owner' in 'std::shared_ptr<T>::shared_ptr'
1> with
1> [
1> T=opentelemetry::v1::logs::EventLoggerProvider
1> ]
1> [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\nostd\shared_ptr.h(86,28):
1> see the first reference to 'std::shared_ptr<T>::shared_ptr' in 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLoggerProvider>::shared_ptr'
1> with
1> [
1> T=opentelemetry::v1::logs::EventLoggerProvider
1> ]
1> [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\logs\provider.h(87,59):
1> see the first reference to 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLoggerProvider>::shared_ptr' in 'opentelemetry::v1::logs::Provider::GetEventProvider'
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingtriage/acceptedIndicates an issue or PR is ready to be actively worked on.Indicates an issue or PR is ready to be actively worked on.