https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77384
Bug ID: 77384 Summary: Assembler error - std::forward(decimal64) already declared Product: gcc Version: 6.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: danielberger at gmail dot com Target Milestone: --- while compiling with no extra flags i get: /tmp/cceuJGN0.s: Assembler messages: 1543 : Error: symbol `_ZSt7forwardIDdEOT_RNSt16remove_referenceIS0_E4typeE' is already defined 1565 : Error: symbol `_ZNSt4pairIiDdEC1IiDdLb1EEEOT_OT0_' is already defined Compilation failed after some investigation it looks like the codegen is emitting this function twice: decimal64&& std::forward<decimal64>(std::remove_reference<decimal64>::type&) perhaps it's the mix of explicit and implicit constructor or something. minimal code - problem.cpp: ------------------------------ #include <decimal/decimal> #include <utility> using std::decimal::decimal64; std::pair<int, decimal64> x = { 1, 1.5dd }; std::pair<int, decimal64> u = { 1, decimal64(1.5dd) }; ------------------------------ live demonstration: https://godbolt.org/g/xgCliN if needed i'm happy to upload more intermediate files