Ostatnio napisałem funkcję szablonu, aby rozwiązać niektóre powtórzenia kodu. To wygląda tak: template<class T, class R, class... Args> R call_or_throw(const std::weak_ptr<T>& ptr, const std::string& error, R (T::*fun)(Args...), Args... args) { if (auto sp = ptr.lock()) {...