[LLVMbugs] [Bug 8446] New: unhelpful error message for missing typename

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sat Oct 23 11:58:23 PDT 2010


           Summary: unhelpful error message for missing typename
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: luc_j_bourhis at mac.com
                CC: llvmbugs at cs.uiuc.edu, dgregor at apple.com

Consider the following code (a reduction of some actual code of mine):

struct site_symmetry_ops { };

template <class wt>
struct class_
 template <class A1>
 void def(A1 const &a1) {}

template <class A1, class A2>
struct init
 init() { }

struct special_position_site_parameter { 
 typedef char scatterer_type;

template <class wt>
struct valued_asu_parameter_heir_wrapper
 static class_<wt> wrap(char const *name) {
   return class_<wt>();

template <class wt>
struct special_position_wrapper
 static void wrap(char const *name) {
     .def(init<site_symmetry_ops const &, wt::scatterer_type *>())

void wrap_special_position() {

clang++ (trunk 116866) generates the following error message:

test.cpp:29:64: error: expected expression
     .def(init<site_symmetry_ops const &, wt::scatterer_type *>())
1 error generated.

The problem is of course that a 'typename' is missing in front of
'wt::scatterer_type'. The error message does not suggest that, not even
implicitly. This is the only case I know of where g++ error message is more
informative than clang++ actually!!

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list