我想获取(模板)类型 A
对象上的迭代器类型使用
typedef decltype(A::begin) A_iterator;
然而,这给出了一个
"cannot determine which instance of overloaded function "std::vector<_Ty, _Alloc>::begin" is intended"
当A
是 std::vector<...>
.
我认为编译器无法区分 const
函数 begin
和非 const
函数 begin
.如何在这两者之间做出选择?
最佳答案
假设 A
是一个类型,而不是一个变量标识符。
using A_iterator = decltype(std::declval<A>().begin());
或者只是……
using A_iterator = typename A::iterator;
如果 A
是一个变量标识符:
using A_iterator = decltype(A.begin());
关于c++ - 使用 `decltype` 获取迭代器的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57090005/