Bug 4893 – Function pointer assignments ignore constness

Status
RESOLVED
Resolution
DUPLICATE
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2010-09-18T17:13:00Z
Last change time
2010-10-19T11:03:16Z
Keywords
accepts-invalid
Assigned to
nobody
Creator
issues.dlang
Blocks
2573

Comments

Comment #0 by issues.dlang — 2010-09-18T17:13:04Z
Take this program: struct S { public: this(int[] function(const int[])func) { _func = func; } @property int[] function(const int[]) func() { return func; } private: int[] function(const int[]) _func; } int[] add1(int[] num) { return num ~ 1; } void main() { auto s = S(&add1); } It shouldn't compile, but it does. add1() does not take a const int[] and therefore could theoretically modify its arguments (though it doesn't here), violating the type of the function pointer. Using in and immutable instead of const has the same problem. They compile when they shouldn't.
Comment #1 by issues.dlang — 2010-09-18T17:14:59Z
Oh, there's an error in my example - func return func instead of _func, resulting infinite recursion and therefore a segfault. I could have removed that function for the bug report anyway.
Comment #2 by dfj1esp02 — 2010-10-19T11:03:16Z
*** This issue has been marked as a duplicate of issue 3797 ***