- support for OO and generic programming (in particular C++ templates are extremely flexible ... someone mentioned Turing complete)
- direct discovery of patterns that allow developers to plug in their own models, payoffs etc.
- The abiliy to migrate the framework to MPI and OpenMP environments, thus allowing us to run parts of the application concurrently (for example, calculating option price and sensitivities)
- We now have some maintainable libraries that can be used
C# is a good language but it is more suitable for desk top environments. The combination of C++/CLI and C# in .NET seems like a good idea; one language for I/O, GUI and so on, and the other one for distributed number crunching. C++/CLI is like C++ but has a number of extensions that take some geting use to.
Edit: had some feedback on this blog; for the record let me say that I know C# well so my personal conclusions are not based on a one-sided analysis or ignorance of C#.