[Issue 4893] New: Function pointer assignments ignore constness

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sat Sep 18 17:13:38 PDT 2010


http://d.puremagic.com/issues/show_bug.cgi?id=4893

           Summary: Function pointer assignments ignore constness
           Product: D
           Version: unspecified
          Platform: Other
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: jmdavisProg at gmx.com


--- Comment #0 from Jonathan M Davis <jmdavisProg at gmx.com> 2010-09-18 17:13:04 PDT ---
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.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list