xyl*_*per 4 c++ templates iterator
为什么我不能编译下一个代码?
#include <iterator>
struct test_iterator {
using value_type = int;
};
int main()
{
std::iterator_traits<test_iterator>::value_type a = 0;
return a;
}
Run Code Online (Sandbox Code Playgroud)
似乎所有三个主要的编译器(msvc / gcc / clang)都无法编译此代码。
据我所知,std::iterator_traits工作方式如下:
template <class T>
struct iterator_traits {
using value_type = typename T::value_type;
... // other memebers
};
Run Code Online (Sandbox Code Playgroud)
怎么了
从iterator_traits开始,从C ++ 17开始:
“如果Iterator没有五个成员类型difference_type,value_type,指针,引用和iterator_category,则此模板不包含任何这些名称的成员(对
std::iterator_traitsSFINAE友好)”
提供缺少的类型可修复错误:演示
| 归档时间: |
|
| 查看次数: |
1026 次 |
| 最近记录: |