This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/52706] New: [C++11] Demangling of templates with std::nullptr_t as non-type parameter
- From: "daniel.kruegler at googlemail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 25 Mar 2012 13:40:01 +0000
- Subject: [Bug c++/52706] New: [C++11] Demangling of templates with std::nullptr_t as non-type parameter
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52706
Bug #: 52706
Summary: [C++11] Demangling of templates with std::nullptr_t as
non-type parameter
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: minor
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: daniel.kruegler@googlemail.com
gcc 4.8.0 20120318 (experimental) has problems to correctly demangle templates
with a non-type template parameter of std::nullptr_t. The following example:
//---
template<class T>
struct W {
template<class U,
decltype(nullptr) = nullptr
//bool = false // OK
>
W(U&&);
};
template<class T, decltype(nullptr) = nullptr>
int f(T);
W<int> w1 = 0;
W<int*> w2 = nullptr; // 14
int i1 = f(0);
int i2 = f(nullptr); // 17
//---
produces link error messages as follows:
"13|undefined reference to `W<int>::W<int, (decltype(nullptr))0>(int&&)'
14|undefined reference to `_ZN1WIPiEC1IDnLS3_0EEEOT_'|
16|undefined reference to `int f<int, (decltype(nullptr))0>(int)'|
17|undefined reference to `_Z1fIDnLS0_0EEiT_'"
The problem seems to occur, if there is at least one further template
parameter, because
template<decltype(nullptr) = nullptr>
int g();
int i3 = g();
correctly produces:
"undefined reference to `int g<(decltype(nullptr))0>()'"