http://llvm.org/bugs/show_bug.cgi?id=10035
Summary: noexcept can't reference function arguments
Product: clang
Version: trunk
Platform: PC
OS/Version: All
Status: NEW
Severity: normal
Priority: P
Component: C++0x
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected], [email protected]
Apple clang version 3.0 (trunk 131788) (based on LLVM 3.0svn)
Target: x86_64-apple-darwin10.7.0
Thread model: posix
Here is a minimal test case:
template <class T>
struct some_trait
{
static const bool value = true;
};
template <class T>
void
swap(T& x, T& y) noexcept(some_trait<T>::value);
template <class ForwardIterator1, class ForwardIterator2>
inline
void
iter_swap(ForwardIterator1 a, ForwardIterator2 b)
noexcept(noexcept(swap(*a,
*b)))
{
swap(*a, *b);
}
int main()
{
int i = 0, j = 0;
iter_swap(&i, &j);
}
test.cpp:16:73: error: reference to local variable 'a' declared in enclosed
function 'iter_swap'
noexcept(noexcept(swap(*a,
*b)))
^
test.cpp:15:1: note: in instantiation of function template specialization
'iter_swap<int *, int *>' requested here
iter_swap(ForwardIterator1 a, ForwardIterator2 b)
^
test.cpp:15:28: note: 'a' declared here
iter_swap(ForwardIterator1 a, ForwardIterator2 b)
^
1 error generated.
The expectation is for this to compile because 'a' and 'b' are in scope.
--
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.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs