c++ - 断言模板参数是迭代器/指针

标签 c++ pointers iterator static-assert enable-if

我有一个接受指针的模板化函数。

template <typename T>
void foo(const T* bar){}

如何更改 foo 以确保向我传递的是迭代器/指针?我假设有一个 static_assert 或一个 enable_if 方法可以做到这一点,但我似乎找不到它。

最佳答案

您可以使用 std::iterator_traits 来检查它是否是一个迭代器(或指针)

template <typename IT>
decltype(std::iterator_traits<IT>::iterator_category{}, void())
foo(IT bar);

关于c++ - 断言模板参数是迭代器/指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31675399/

相关文章:

c++ - QML ScrollView 与 ColumnLayout

c++ - 使用 istream 从 boost::asio UDP 套接字中检索 float

c++ - 尝试使用指向结构 vector 的指针访问结构类型时出错

c++ - 函数指针的现代 C++ 替代品

pointers - 检查指针是否指向 Nil Slice

Python如何将方法的结果转换为生成器

c++ - 在 STL map 中的所需位置插入元素

C++ Math评估不正确

java - 如何访问 <s :iterator> tag of jsp file inside my javascript function? 中指定的自定义类对象的 java 列表

c++ - 如何使用 C/C++ 获取 .ini 文件中的键数