[英]How to get const_iterator when the T is 'const std::map',?
我有以下結構:
template<typename T>
struct Foo
{
typename T::iterator iter;
};
預期類型:
當T
被推導為std::map<K, V>
時, iter
是一個std::map<K, V>::iterator
。
當T
推導為const std::map<K, V>
時, iter
是std::map<K, V>::const_iterator
但是我的代碼總是得到一個std::map<K, V>::iterator
。
如何實現預期的執行?
您可以提供一個std::conditional
類型:
#include <type_traits> // std::conditional_t
template<typename T>
struct Foo {
using iter = std::conditional_t<std::is_const_v<T>
, typename T::const_iterator
, typename T::iterator>;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.