<html>
    <head>
      <base href="http://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - Clang 3.5 incorrect error: declaration of reference variable requires an initializer"
   href="http://llvm.org/bugs/show_bug.cgi?id=21020">21020</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Clang 3.5 incorrect error: declaration of reference variable requires an initializer
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>-New Bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>wtt6@cornell.edu
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>See code and output below.  The code is accepted as is by clang 3.4.  Clang 3.5
accepts it if either commented line is substituted for its preceeding line or
if the function g() is made non-templated.


$ cat test.cpp 
struct foo { foo(int) {} };
//typedef char foo;

template <class>
void g()
{
  int x;
  const foo& y(x);
  //const foo& y = x;
}

void f() {
  g<int>();
}
$ clang+llvm-3.5.0-x86_64-linux-gnu/bin/clang++ -fsyntax-only test.cpp 
test.cpp:8:14: error: declaration of reference variable 'y' requires an
      initializer
  const foo& y(x);
             ^
test.cpp:13:3: note: in instantiation of function template specialization
      'g<int>' requested here
  g<int>();
  ^
1 error generated.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>