On 10/17/2018 01:24 PM, Vijay Nayar wrote:
I have a snippet of code like this:
     scope chordAngle = new S1ChordAngle(_center, other._center);
     return _radius + other._radius >= chordAngle;

The reason the "scope" temporary variable exists is to avoid a heap allocation and instead prefer a value be created on the stack.  Is there a way to do this inline?

Something like:
    return _radius + other._radius >= scope new S1ChordAngle(_center, other._center);

I think it's possible but what you're looking for is std.typecons.scoped. 'scope' does not do what you think it does.

import std.typecons : scoped;

class C {
    int i;
    this(int i) {
        this.i = i;
    }
    int foo() {
        return i;
    }
}

bool bar() {

    auto c = scoped!C(42);
    return 42 == c.foo();
}

bool bar_2() {
    return 42 == scoped!C(42).foo();
}

void main() {
    bar();
    bar_2();
}

Ali

Reply via email to