簡體   English   中英

如何解決在MSVC 2012中使用K = ...`的問題?

[英]How to work around `using K = …` in MSVC 2012?

似乎MSVC 2012不支持using K = ...; - 類型聲明。 例如,使用代碼:

template <class Map>
inline void foo(Map &m)
{
  using K = typename Map::key_type;
  using V = typename Map::mapped_type;
  // ...
}

結果是語法錯誤:

error C2143: syntax error : missing ';' before '='
error C2873: 'K' : symbol cannot be used in a using-declaration

如何在不升級編譯器的情況下解決MSVC 2012的這個缺失功能​​?

微軟對C ++ 11的支持是不完整的,這是VS2012中缺少的東西之一。 但在這種情況下,你應該能夠使用一個老式的typedef; 例如:

typedef typename Map::key_type K;

此變通辦法崩潰的地方是模板類型:

template<typename T>
using Bar = Foo<T>; // ok if your compiler supports it

template<typename T>
typedef Foo<T> Bar; // doesn't compile

但是你仍然至少有這個選擇:

template<typename T>
struct Bar
{
   typedef Foo<T> type;
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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