Skip to content

Can not compile when using WITH_STL=CXX11 with legacy toolchain #3096

@owent

Description

@owent

Describe your environment

OS: Linux
Compiler: GCC 4.8.5
otel-cpp version: 1.17.0

Steps to reproduce
Building otel-cpp 1.17.0

What is the expected behavior?
Building success.

What is the actual behavior?

/home/runner/work/cmake-toolset/cmake-toolset/test/third_party/packages/opentelemetry-cpp-v1.17.0/exporters/memory/src/in_memory_metric_exporter_factory.cc: In member function ‘virtual opentelemetry::v1::sdk::common::ExportResult opentelemetry::v1::exporter::memory::{anonymous}::InMemoryMetricExporter::Export(const opentelemetry::v1::sdk::metrics::ResourceMetrics&)’:
/home/runner/work/cmake-toolset/cmake-toolset/test/third_party/packages/opentelemetry-cpp-v1.17.0/exporters/memory/src/in_memory_metric_exporter_factory.cc:52:16: error: ‘make_unique’ is not a member of ‘std’
     data_->Add(std::make_unique<ResourceMetrics>(data));
                ^
/home/runner/work/cmake-toolset/cmake-toolset/test/third_party/packages/opentelemetry-cpp-v1.17.0/exporters/memory/src/in_memory_metric_exporter_factory.cc:52:48: error: expected primary-expression before ‘>’ token
     data_->Add(std::make_unique<ResourceMetrics>(data));

// ...
/home/runner/work/cmake-toolset/cmake-toolset/test/third_party/packages/opentelemetry-cpp-v1.17.0/exporters/memory/src/in_memory_metric_exporter_factory.cc:82:26: error: parameter declared ‘auto’
   return Create(data, [](auto) { return AggregationTemporality::kCumulative; });


// ...
/home/runner/work/cmake-toolset/cmake-toolset/test/third_party/packages/opentelemetry-cpp-v1.17.0/exporters/memory/src/in_memory_metric_data.cc: In member function ‘virtual void opentelemetry::v1::exporter::memory::SimpleAggregateInMemoryMetricData::Add(std::unique_ptr<opentelemetry::v1::sdk::metrics::ResourceMetrics>)’:
/home/runner/work/cmake-toolset/cmake-toolset/test/third_party/packages/opentelemetry-cpp-v1.17.0/exporters/memory/src/in_memory_metric_data.cc:34:30: error: converting to ‘std::map<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::map<opentelemetry::v1::sdk::common::OrderedAttributeMap, absl::lts_2020_02_25::variant<opentelemetry::v1::sdk::metrics::SumPointData, opentelemetry::v1::sdk::metrics::HistogramPointData, opentelemetry::v1::sdk::metrics::LastValuePointData, opentelemetry::v1::sdk::metrics::DropPointData> > >::key_type {aka std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >}’ from initializer list would use explicit constructor ‘constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with _T1 = std::basic_string<char>; _T2 = std::basic_string<char>]’
         data_[{scope, metric}].insert({pda.attributes, pda.point_data});
                              ^
/home/runner/work/cmake-toolset/cmake-toolset/test/third_party/packages/opentelemetry-cpp-v1.17.0/exporters/memory/src/in_memory_metric_data.cc: In member function ‘const AttributeToPoint& opentelemetry::v1::exporter::memory::SimpleAggregateInMemoryMetricData::Get(const string&, const string&)’:
/home/runner/work/cmake-toolset/cmake-toolset/test/third_party/packages/opentelemetry-cpp-v1.17.0/exporters/memory/src/in_memory_metric_data.cc:44:31: error: converting to ‘std::map<std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::map<opentelemetry::v1::sdk::common::OrderedAttributeMap, absl::lts_2020_02_25::variant<opentelemetry::v1::sdk::metrics::SumPointData, opentelemetry::v1::sdk::metrics::HistogramPointData, opentelemetry::v1::sdk::metrics::LastValuePointData, opentelemetry::v1::sdk::metrics::DropPointData> > >::key_type {aka std::tuple<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >}’ from initializer list would use explicit constructor ‘constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with _T1 = std::basic_string<char>; _T2 = std::basic_string<char>]’
   return data_[{scope, metric}];                    ^

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingtriage/acceptedIndicates an issue or PR is ready to be actively worked on.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions