我想使用(模板)类型A
的对象获取迭代器的类型
typedef decltype(A::begin) A_iterator;
但是,这给出了
“ 无法确定要使用哪个重载函数实例” std :: vector <_Ty,_Alloc> :: begin“ ”
当A
是std::vector<...>
时。
我认为编译器无法区分const
函数begin
和非{const
函数begin
。我该如何在这两者之间进行选择?
答案 0 :(得分:4)
假设A
是一种类型,而不是变量标识符。
using A_iterator = decltype(std::declval<A>().begin());
或者只是...
using A_iterator = typename A::iterator;
如果A
是变量标识符:
using A_iterator = decltype(A.begin());