询问C++标准库中是否存在检测类型隐式转换的concept
问题
需要一个用于检测某类型可隐式转换为另一类型的C++ concept,已知std::convertible_to<From, To>会包含显式转换(如static_cast/const_cast),自身已实现可行方案:
template<typename From, typename To> concept implicitly_convertible_to = requires(From &from, void (&func)(To&)) { func(from); };
询问C++标准库中是否存在可实现该需求的现成concept,若存在则是什么。
回答
C标准库(截至C23)中没有专门用于检测仅隐式转换的现成concept。
std::convertible_to的设计逻辑是检查通过static_cast<To>(std::declval<From>())是否能完成转换,这其中自然包含了显式转换的场景,无法区分隐式和显式转换。
你自己实现的implicitly_convertible_to是合理的方案:通过要求func(from)能直接调用(即from可隐式转换为To&),准确限定了隐式转换的场景。
内容的提问来源于stack exchange,提问作者Chameleon
相关产品推荐
相关产品推荐

