Generic callback template (C++)