看来,MSVC 2012不支持using K = ...;-type声明。例如,使用代码:
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缺少的功能?
发布于 2014-10-07 17:11:41
微软对C++11的支持是不完整的,这是VS2012中缺少的东西之一。但在这种情况下,您应该能够使用一个老式的类型;例如:
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;
};https://stackoverflow.com/questions/26241427
复制相似问题