[LLVMbugs] [Bug 18275] New: Incorrect const qualifier behavior in definition
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Wed Dec 18 07:16:40 PST 2013
http://llvm.org/bugs/show_bug.cgi?id=18275
Bug ID: 18275
Summary: Incorrect const qualifier behavior in definition
Product: clang
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: C++
Assignee: unassignedclangbugs at nondot.org
Reporter: detunized at gmail.com
CC: dgregor at apple.com, llvmbugs at cs.uiuc.edu
Classification: Unclassified
The declaration of A::f has a const. The definition doesn't.
template <typename T>
struct A
{
void f(const int);
};
template <typename T>
void A<T>::f(int x)
{
x = 0;
}
void f()
{
A<float> a;
a.f(0);
}
Clang produces an error:
test.cpp:10:7: error: read-only variable is not assignable
x = 0;
~ ^
test.cpp:26:7: note: in instantiation of member function 'A<float>::f'
requested here
a.f(0);
^
This doesn't seem to be a correct behavior. It only happens for template
classes. In exact the same situation with a regular class everything compiles
well.
struct B
{
void f(const int);
};
void B::f(int x)
{
x = 0;
}
void f()
{
B b;
b.f(0);
}
GCC compiles both examples without an error.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20131218/6e603013/attachment.html>
More information about the llvm-bugs
mailing list