首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在2012年MSVC中使用K= ...`?

如何在2012年MSVC中使用K= ...`?
EN

Stack Overflow用户
提问于 2014-10-07 17:06:56
回答 1查看 104关注 0票数 2

看来,MSVC 2012不支持using K = ...;-type声明。例如,使用代码:

代码语言:javascript
复制
template <class Map>
inline void foo(Map &m)
{
  using K = typename Map::key_type;
  using V = typename Map::mapped_type;
  // ...
}

结果是语法错误:

代码语言:javascript
复制
error C2143: syntax error : missing ';' before '='
error C2873: 'K' : symbol cannot be used in a using-declaration

在不升级编译器的情况下,我如何解决MSVC 2012缺少的功能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-07 17:11:41

微软对C++11的支持是不完整的,这是VS2012中缺少的东西之一。但在这种情况下,您应该能够使用一个老式的类型;例如:

typedef typename Map::key_type K;

当这种类型被模板化时,这个解决方案就会分崩离析:

代码语言:javascript
复制
template<typename T>
using Bar = Foo<T>; // ok if your compiler supports it

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

但至少你还有这样的选择:

代码语言:javascript
复制
template<typename T>
struct Bar
{
   typedef Foo<T> type;
};
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26241427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档