|
|
|
|
|
by mattnewport
2716 days ago
|
|
A bit of a test case for me, coming from the domain of games / 3D graphics programming, as to whether a language has a 'sufficiently powerful' generics feature set is whether it is possible to implement a generic 'short vector' type as used in any type of graphics programming. I think 'good' generics / metaprogramming support should let you meet most of these goals in a generic 'short vector' type: - Support 'n' dimensional vectors (2, 3 and 4 are the only ones commonly used in 3D graphics and games). - Support a choice of underlying element type (at least float, double and int but it's handy to be able to support custom types like a fixed point or rational type too). - Support operator overloading for natural expression of things like adding two vectors. - Be very close or identical in performance to the equivalent hand written variant for every combination of dimension / element type (excluding optimizations for particular SIMD element widths etc.) - Not be significantly worse for debugging than the equivalent hand written code (this is as much a tooling issue as a language issue). It's possible to meet all of these requirements in modern C++ without using any particularly exotic metaprogramming functionality. It's impossible in C#. I don't know of any other language that meets these requirements as well as C++ although I'm not really familiar with the facilities offered by e.g. Rust. |
|