Am 02.12.20 um 19:17 schrieb John Maddock via Boost:
FYI there are many traits in boost.type_traits which are not part of the standard. I would hate to see folks re-implementing is_detected or has_operator_XXXX just to "not use type_traits".
I'm aware of that. I didn't say to "ban" type_traits or reimplement it.
My suggestion was to "ban" (hard word, I meant to "very strongly
discourage using it and actively shift boost libraries away from it")
MPL and reduce "the use of type_traits to the absolute minimum". For
most (anyone got numbers? I'd say 80% at least) there are std::
counterparts in C++11 which (usually) do the same. And if the library
doesn't use any of the additional boost traits, that would remove
another dependency and reduce compiletimes for end users (which likely
included
People who want to ban MPL or any other library are effectively admitting they have no skin in the game (they don't use it). We should hear from actual users, but we won't; they don't have a problem to complain about, because we have not broken their code yet.
The result is, that changing boost::mpl::vector66 to std::variant can improve the compile time from 1:44 to 1:20 [...] Everything that was compiled to Factorio, GUI, graphics library, networking, entity logic,
You might have missed that, but this came up many times in the past. Last I have noticed was https://factorio.com/blog/post/fff-206 scripting, modding, logistic system... all these things together took the same time to compile as two instances of boost::mpl::vector Looks like they used Boost.Variant which is based on MPL. However in this case IIRC Boost.Variant2 is C++11 already and doesn't use MPL so that could have been used here. But the message is the same: Increased compile time is in the Top 3 complaints about Boost since forever. And it has been shown multiple times that MPL is the slowest choice for TMP once you got access to real variadic templates