Does `is` expression with template alias need fixing.

FeepingCreature feepingcreature at gmail.com
Wed Mar 22 12:30:46 UTC 2023


On Wednesday, 22 March 2023 at 10:43:15 UTC, Elfstone wrote:
> I don't know how C++ compilers resolve `template using` just 
> fine.
>
> ```C++
> template <typename T>
> using Vector3 = Matrix<T, 3, 1>;
> ```
>
> I declare an alias and I use it everywhere. It acts as a 
> natural constraint. I never needed `isVector3` with my old C++ 
> code. I expected D could do the same, and was really frustrated 
> when I found out it couldn't. Even more frustrated when I read 
> Steven's reply, that the bug with `is` has been there for 16 
> years.
>
> When the compiler allows people to use template aliases as 
> template function parameters, it should make it work, or reject 
> it aloud. Maybe some future system can save the day, but does 
> it mean the old `alias` will just be left bugged?

You can perfectly fine use `alias Vector3(T) = Matrix!(T, 3, 1)` 
in D. You cannot *constrain a type to be Vector3* in D, but you 
cannot in C++ either. (I don't think so? I'm poking at C++20 
concepts, but I don't see a way to do it.)


More information about the Digitalmars-d mailing list