[英]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.