I certainly won't shed a tear over exception specification. ("A good idea which, unfortunately, never worked out.") All they ever were good for were what now noexcept
stands for.
But I had hoped that export
would make it. As the very least, export
would allow you to change helper functions for templates without having to re-compile all the code using those templates. And it would get us rid of all those detail
namespaces:
namespace detail { // actually we don't want this public, but can't avoid it
template<typename T>
void f_helper() { /*---*/ }
}
template<typename T>
void f() {detail::f_helper();}
void g() {f<int>();} // has to recompile if f_helper()'s implementation changes
Alas, since only one of the compilers I had to use during the last decade ever implemented it, I could never use it.