【发布时间】:2021-01-28 14:40:00
【问题描述】:
我有一个函数
template<typename T>
static inline bool Contains(T container, const typename T::value_type& value)
{
return std::find(container.begin(), container.end(), value) != container.end();
}
是否有一个选项可以禁止此函数的隐式转换?
这段代码应该编译失败:
std::vector<int> vec = {1, 2, 3};
Contains(vec, -5.2);
在这篇How do I avoid implicit conversions on non-constructing functions? 的帖子中,他们完全删除了某些类型的使用,但事实并非如此。
谢谢。
【问题讨论】:
标签: c++ templates implicit-conversion