Skip to main content
added 114 characters in body
Source Link
Christian Waluga
  • 1.1k
  • 2
  • 7
  • 21

Besides deal.ii which(which was already suggested here) you can also have a look at the Dune library which also usesmakes extensive use of some advanced C++ features like template metaprogramming, iterator ranges, smart pointers, and so on. There is also a recent preprint by Joachim Schöberl, which comments on the use of C++ 11 features, like for instance lambda functions, for simplifying the implementation of the finite element methods in NGSolve. Boost also has some libraries related to scientific programming like uBLAS, Graph, etc. I guess in allmost of these libraries you will find good and probably also not so good examples examples of modern C++ usage. SometimesHowever, be aware that you may encounter also bad examples of using advanced/modern C++. In some cases, while reading the code/documentation, I getgot the feeling that occasionally things are vastly over-generalized in such libraries for the sake of showing off advanced skills like TMP when, where for 99% of all potential applications a more straightforward implementation would also do the job.

Besides deal.ii which was already suggested you can also have a look at the Dune library which also uses some advanced C++ features like template metaprogramming, iterator ranges and so on. There is also a recent preprint by Joachim Schöberl which comments on the use of C++ 11 features like for instance lambda functions for simplifying the implementation of the finite element methods in NGSolve. Boost also has some libraries related to scientific programming like uBLAS, Graph, etc. I guess in all of these libraries you will find good and probably also not so good examples of modern C++ usage. Sometimes I get the feeling that things are over-generalized in such libraries for the sake of showing off advanced skills like TMP when for 99% of all potential applications a more straightforward implementation would also do the job.

Besides deal.ii (which was already suggested here) you can also have a look at the Dune library which makes extensive use of some advanced C++ features like template metaprogramming, iterator ranges, smart pointers, and so on. There is also a recent preprint by Joachim Schöberl, which comments on the use of C++ 11 features, like for instance lambda functions, for simplifying the implementation of the finite element methods in NGSolve. Boost also has some libraries related to scientific programming like uBLAS, Graph, etc. I guess in most of these libraries you will find good examples of modern C++ usage. However, be aware that you may encounter also bad examples of using advanced/modern C++. In some cases, while reading the code/documentation, I got the feeling that occasionally things are vastly over-generalized for the sake of showing off advanced skills like TMP, where for 99% of all potential applications a more straightforward implementation would also do the job.

Source Link
Christian Waluga
  • 1.1k
  • 2
  • 7
  • 21

Besides deal.ii which was already suggested you can also have a look at the Dune library which also uses some advanced C++ features like template metaprogramming, iterator ranges and so on. There is also a recent preprint by Joachim Schöberl which comments on the use of C++ 11 features like for instance lambda functions for simplifying the implementation of the finite element methods in NGSolve. Boost also has some libraries related to scientific programming like uBLAS, Graph, etc. I guess in all of these libraries you will find good and probably also not so good examples of modern C++ usage. Sometimes I get the feeling that things are over-generalized in such libraries for the sake of showing off advanced skills like TMP when for 99% of all potential applications a more straightforward implementation would also do the job.