C++ 将别名声明与VC++;11

C++ 将别名声明与VC++;11,c++,visual-c++,c++11,C++,Visual C++,C++11,下面的代码示例使用C++11中新增的别名声明无法使用VC++11编译,在VS2012中更新1并发出包含的错误。它在Windows 7上使用g++-std=c++11-Wall in.cpp在MinGW下使用GCC 4.7.2编译和执行,无需peep 我没有发现任何迹象表明这是不受支持的。此外,IntelliSense不会检测到任何错误,并显示cdptr类型的工具提示,说明typedef const double*cdptr。我的项目被设置为使用V110平台工具集并编译为C++代码。 我是如何冤枉

下面的代码示例使用C++11中新增的别名声明无法使用VC++11编译,在VS2012中更新1并发出包含的错误。它在Windows 7上使用
g++-std=c++11-Wall in.cpp
在MinGW下使用GCC 4.7.2编译和执行,无需peep

我没有发现任何迹象表明这是不受支持的。此外,IntelliSense不会检测到任何错误,并显示
cdptr
类型的工具提示,说明
typedef const double*cdptr
。我的项目被设置为使用V110平台工具集并编译为C++代码。 我是如何冤枉微软的

#include <iostream>

int main()
{
    using cdptr = const double*;

    const double pi = 3.14159;
    cdptr cdp = &pi;

    std::cout << "cdp: " << (*cdp) << std::endl;

    return 0;
}
MSVC11,即使是11月份的CTP,也不使用别名声明来实现


您可以找到一个支持C++11的表格。

基于,Visual Studio 2012似乎还不支持类型别名。

非常确定VC++11不支持使用别名声明。我的阅读使我相信不支持的是模板别名(参数化类型别名),而不是N2258中的所有内容。但是,如果正确的解读是,MSVC11不支持该文档中的所有内容,那么就解决了这个问题。@MartinshShaiters:是的,整个问题都解决了。平心而论,该特性的全部动机是模板部分,因此任何编译器在没有模板的情况下都不太可能实现它(那只是typedef)。@gmannickgyes。但对于typdef来说,它是一种非常简洁的语法!:)
1>------ Build started: Project: AliasDeclTest, Configuration: Debug Win32 ------
1>  AliasDeclTest.cpp
1>f:\aliasdecltest\aliasdecltest.cpp(9): error C2143: syntax error : missing ';' before '='
1>f:\aliasdecltest\aliasdecltest.cpp(9): error C2873: 'cdptr' : symbol cannot be used in a using-declaration
1>f:\aliasdecltest\aliasdecltest.cpp(12): error C2065: 'cdptr' : undeclared identifier
1>f:\aliasdecltest\aliasdecltest.cpp(12): error C2146: syntax error : missing ';' before identifier 'cdp'
1>f:\aliasdecltest\aliasdecltest.cpp(12): error C2065: 'cdp' : undeclared identifier
1>f:\aliasdecltest\aliasdecltest.cpp(14): error C2065: 'cdp' : undeclared identifier
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========