面试题答案
一键面试#include <type_traits>
// 定义一个辅助模板,用于检测类是否有print成员函数
template<typename T, typename = void>
struct has_print_member : std::false_type {};
template<typename T>
struct has_print_member<T, std::void_t<decltype(std::declval<T>().print())>> : std::true_type {};
// 函数模板,使用元编程约束T
template<typename T, typename = std::enable_if_t<has_print_member<T>::value>>
void call_print(T& obj) {
obj.print();
}