簡體   English   中英

當 T 是 'const std::map' 時如何獲取 const_iterator?

[英]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>時, iterstd::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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM