Bug 20413 – C++ mangling bug with templates & the std namespace

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2019-11-21T22:53:05Z
Last change time
2019-11-22T04:39:59Z
Keywords
pull
Assigned to
No Owner
Creator
Suleyman Sahmi (سليمان السهمي)

Comments

Comment #0 by sahmi.soulaimane — 2019-11-21T22:53:05Z
Test case: ``` extern(C++, "std") struct pair(T1, T2) {} extern(C++) void fun(pair!(int, float), pair!(float, int)); pragma(msg, fun.mangleof); ``` output: _Z3funSt4pairIifENS_IfiEE expected: _Z3funSt4pairIifES_IfiE
Comment #1 by dlang-bot — 2019-11-22T01:11:04Z
@SSoulaimane updated dlang/dmd pull request #10601 "Fix issue 20413 - Itanium mangling bug with template substitution in the std namespace" fixing this issue: - Fix issue 20413 - Itanium mangling bug with template substitution in the "std" namespace N..E is not needed in when substituting template instances of "std" members. The Itanium spec isn't too clear about this one but this is the way of GCC and Clang implementations. https://github.com/dlang/dmd/pull/10601
Comment #2 by dlang-bot — 2019-11-22T04:39:59Z
dlang/dmd pull request #10601 "Fix issue 20413 - Itanium mangling bug with template substitution in the std namespace" was merged into master: - 8b22d40a7a6debaae6af164dedda385937802de7 by سليمان السهمي (Suleyman Sahmi): Fix issue 20413 - Itanium mangling bug with template substitution in the "std" namespace N..E is not needed in when substituting template instances of "std" members. The Itanium spec isn't too clear about this one but this is the way of GCC and Clang implementations. https://github.com/dlang/dmd/pull/10601