On Wednesday, 20 September 2017 at 14:15:30 UTC, Steven Schveighoffer wrote:
On 9/20/17 3:12 AM, Dgame wrote:


http://p0nce.github.io/d-idioms/#@nogc-Array-Literals:-Breaking-the-Limits

This is plain stack corruption, you should fix that. The s template seems useful, but still I can't get my use case to work with it:

T[n] s(T, size_t n)(auto ref T[n] array) pure nothrow @nogc @safe
{
    return array;
}

void main()
{
    char[5] x1 = "hello"; // works.
    auto x2 = s("hello"); // oops, type is immutable(char[5]);
auto x3 = s!char("hello"); // template s cannot deduce function from argument types !(char)(string)
}

-Steve

Works:
----
char[5] b = "hallo".s;
----

Otherwise you could simply use Unqual:
----
Unqual!T[n] s(T, size_t n)(T[n] arr)
{
        return arr;
}

auto a = "hallo".s;
writeln(typeof(a).stringof); // char[5]
----


Reply via email to