www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - IFTI needs to be updated if you accept tuples

reply Basile B. <b2.temp gmx.com> writes:
things like

```d
void test(T,U,V)((T,U,V) tuv){}
```

need to work with

```d
test((0.1, 1, false)) //  T= double, U = int, V = bool
```

just saying
May 27
next sibling parent reply Sergey <kornburn yandex.ru> writes:
On Monday, 27 May 2024 at 17:17:41 UTC, Basile B. wrote:
 things like

 ```d
 void test(T,U,V)((T,U,V) tuv){}
 ```

 need to work with

 ```d
 test((0.1, 1, false)) //  T= double, U = int, V = bool
 ```

 just saying
You need to add expand currently https://dlang.org/library/std/typecons/tuple.expand.html Because D doesn’t have real tuples. But our hope with Timon
May 27
parent reply Basile B. <b2.temp gmx.com> writes:
On Monday, 27 May 2024 at 18:17:28 UTC, Sergey wrote:
 On Monday, 27 May 2024 at 17:17:41 UTC, Basile B. wrote:
 things like

 ```d
 void test(T,U,V)((T,U,V) tuv){}
 ```

 need to work with

 ```d
 test((0.1, 1, false)) //  T= double, U = int, V = bool
 ```

 just saying
You need to add expand currently https://dlang.org/library/std/typecons/tuple.expand.html Because D doesn’t have real tuples. But our hope with Timon
implemented [here](https://gitlab.com/styx-lang/styx/-/blob/master/src/styx/semantic/ex ressions.sx#L5594). IFTI might me a little different compared to IGA. In first palce I did not want to use the same name as IGA was a little under and also did other things ;)
May 27
parent Basile B. <b2.temp gmx.com> writes:
On Tuesday, 28 May 2024 at 01:16:55 UTC, Basile B. wrote:
 On Monday, 27 May 2024 at 18:17:28 UTC, Sergey wrote:
 On Monday, 27 May 2024 at 17:17:41 UTC, Basile B. wrote:
 things like

 ```d
 void test(T,U,V)((T,U,V) tuv){}
 ```

 need to work with

 ```d
 test((0.1, 1, false)) //  T= double, U = int, V = bool
 ```

 just saying
You need to add expand currently https://dlang.org/library/std/typecons/tuple.expand.html Because D doesn’t have real tuples. But our hope with Timon
implemented [here](https://gitlab.com/styx-lang/styx/-/blob/master/src/styx/semantic/ex ressions.sx#L5594). IFTI might me a little different compared to IGA. In first palce I did not want to use the same name as IGA was a little under and also did other things ;)
example ``` struct S[T] { constructor function make(T t){} } function main(): s32 { var someEss = S.make(0); return 0; } ``` that is just nice. in D that is impossible. You have to write ``` struct S(T) { this(T t){} } auto makeAess(T)(T t) { return S!(T)(t); } int main() { auto someEss = makeAess(0); return 0; } ```
May 27
prev sibling parent reply Timon Gehr <timon.gehr gmx.ch> writes:
On 5/27/24 19:17, Basile B. wrote:
 things like
 ```d
 void test(T,U,V)((T,U,V) tuv){}
 ```
 
 need to work with
 
 ```d
 test((0.1, 1, false)) //  T= double, U = int, V = bool
 ```
 
 just saying
 
You are correct. However, it should be fixed regardless. Even if tuple syntax does not make it into the language, I think this code should work today: ```d static import std.typecons; void test(T,U,V)(std.typecons.Tuple!(T,U,V) tuv){} void main(){ test(std.typecons.tuple(0.1, 1, false)); } ``` However, it seems IFTI currently fails with fully qualified template instantiations. Your code therefore indeed does not work with the prototype implementation of tuple syntax (which for the time being lowers tuple syntax to fully-qualified std.typecons template instantiations), but I think this is an unrelated bug.
May 27
parent Basile B. <b2.temp gmx.com> writes:
On Tuesday, 28 May 2024 at 06:47:55 UTC, Timon Gehr wrote:
 However, it seems IFTI currently fails with fully qualified 
 template instantiations.

 Your code therefore indeed does not work with the prototype 
 implementation of tuple syntax (which for the time being lowers 
 tuple syntax to fully-qualified std.typecons template 
 instantiations), but I think this is an unrelated bug.
That looks like a bug in IFTI implementation. Filled as https://issues.dlang.org/show_bug.cgi?id=24573.
May 29