<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 --- - accepts invalid?"
href="http://llvm.org/bugs/show_bug.cgi?id=16137">16137</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>accepts invalid?
</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>C++11
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedclangbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>rafael.espindola@gmail.com
</td>
</tr>
<tr>
<th>CC</th>
<td>dgregor@apple.com, llvmbugs@cs.uiuc.edu
</td>
</tr>
<tr>
<th>Classification</th>
<td>Unclassified
</td>
</tr></table>
<p>
<div>
<pre>clang will accept
void *g() {
struct S {
};
extern S bax();
return reinterpret_cast<void*>(bax);
}
Reading the standard suggests we might be pedantically correct since
[basic.link]
says
The name of a function declared in block scope .... no matching entity is
found, the block scope entity receives external linkage.
The type is not even considered. There is no way the above program could work,
so IMHO this should be a DR, but at the very least we should produce a warning.
gcc -std=c++11 says
error: āg()::S bax()ā, declared using local type āg()::Sā, is used but never
defined</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>