https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100629

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |UNCONFIRMED
     Ever confirmed|1                           |0

--- Comment #19 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to James McKelvey from comment #17)
> Sorry, that constructor is in the .cc file.

Ah yes, sorry, I see it now.

I tried to reproduce the issue with this code, but the symbol is always mangled
consistently (with and without MAIN defined):

#include <vector>
#include <string>

class CString { };

extern const std::vector<std::string> complement_names;
extern const CString COMPLEMENTENUM;


template <const std::vector<std::string>& names,
          const CString& title>
class TemplateEnum
{
};

class ConflateIntegerScalarValue { };

typedef TemplateEnum<complement_names, COMPLEMENTENUM> ComplementEnum;

struct BreakPattern
{
    BreakPattern(const std::string&,
                        const ConflateIntegerScalarValue&,
                        const ConflateIntegerScalarValue&,
                        const ComplementEnum&);
};

#ifdef MAIN
int main()
{
  BreakPattern b("", {}, {}, {});
}
#else
BreakPattern::
BreakPattern(const std::string&,
             const ConflateIntegerScalarValue&,
             const ConflateIntegerScalarValue&,
             const ComplementEnum&)
{
}
#endif

Reply via email to