I've implemented a smart pointer that stores an object of type T with proxy function that calls the internal object's methods:
template <class Function, class ...Args, class ...Params>
inline bool call( Function (T::*function)(Args...) const, Params&& ...args ) const noexcept( noexcept( function ));
But I have found a strange problem - when an std::exception is generated in a member function, the program is terminated, even though the proxy function is called within a try block. So my question is: is it a correct way to use noexcept operator, and if not, how should I use it in this case?