This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/52706] New: [C++11] Demangling of templates with std::nullptr_t as non-type parameter


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>()'"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]