www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 12064] New: std.typecons.wrap doesn't handle NVI

https://d.puremagic.com/issues/show_bug.cgi?id=12064

           Summary: std.typecons.wrap doesn't handle NVI
           Product: D
           Version: unspecified
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: Phobos
        AssignedTo: nobody puremagic.com
        ReportedBy: pontifechs gmail.com


--- Comment #0 from Matthew Dudley <pontifechs gmail.com> 2014-02-02 09:26:38
PST ---
Here's an example:



import std.typecons; //wrap

import std.stdio;


interface FooBar
{
public:
    void foo();
    void bar();

    final void both() // NVI
        {
            foo();
            bar();
        }
}

class Baz
{
public:
    void foo() { writeln("foo"); }
    void bar() { writeln("bar"); }
}

void main()
{
    auto baz = new Baz();
    auto foobar = baz.wrap!(FooBar)();
    // causes this wall-o-text error -- http://pastebin.com/Pa5dHQtN
    // Which at the end says:

    // /usr/local/Cellar/dmd/2.064.2/import/std/typecons.d(2779): 
Error: static assert  "Source Baz does not have structural 
conformance to (FooBar)"
}


It looks like wrap is trying to override the NVI method, but since it's final,
it doesn't work.

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