Modernize Relations
Apart from generic cleanups (eg. remove the 'inline' keyword when it is not needed), the most important change is to change the way the types used inside Relations are customized. When the traits class is specialized for a given type, previously it had to specify all types. Instead here one only specifies the types which need to be customized, and then the remainder will be taken from the defaults (which may involve previously customized types!). As a result, customizing the types becomes much less work.
Note that also some types are no longer required in C++11/C++17 thanks to
auto
and CTAD
(class template argument deduction) and those have been
removed -- and due to this, this MR must be applied either after Lbcom!385 (merged),
or in conjunction with it. Also, must be applied in conjunction with Phys!616 (merged)
and Analysis!556 (merged)