Added const to implement_interface::get_use_interface to make sure l-value overload of use_unknown gets used if called with imp.get_use_interface(). To do this changed operator() in cross_function_implementation_base to NOT use std::forward