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