function returning a tuple

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Apr 8 13:58:46 PDT 2016


On 04/08/2016 01:53 PM, WhatMeWorry wrote:
>
> This might be a very simple fix, but I've been fighting this for more
> hours than I care to admit to.
>
>
> std.typecons says "Tuple of values, for example Tuple!(int, string) is a
> record that stores an int and a string. Tuple can be used to bundle
> values together, notably when returning multiple values from a function."
>
>
> But when I try this in practice with
>
> // typedef std::tuple<GLboolean, Direction, glm::vec2> Collision; //
> porting C++ to
> Tuple!(GLboolean, Direction, vec2) Collision;

Collision is a variable. Did you mean

alias Collision = Tuple!(GLboolean, Direction, vec2);

>
>
> Collision CheckCollision(BallObject one, GameObject two) // AABB -

That won't work because you should have a type instead of Collision (a 
variable).

> Circle collision
> {
>
>
> DMD 2.071.0, keeps returning at the function signature:
> Error: functions cannot return a tuple
>
> I've also tried,
> alias Collision = AliasSeq!(GLboolean, Direction, vec2);
> but same error.
>
> Am I doing anything stupid here?
> thanks.

And yes, functions can return tuples: :)

import std.typecons;

struct S {
     int i;
}

Tuple!(int, S) foo() {
     return tuple(42, S(43));
}

void main() {
     auto a = foo();
}

Ali




More information about the Digitalmars-d-learn mailing list