<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>