7

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

我没有发现任何不支持此功能的迹象。此外,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;
}

构建输出:

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 ==========
4

2 回答 2

12

MSVC11,即使是11 月 CTP,也没有实现使用别名声明。

您可以在此处找到C++11支持表。

于 2013-01-08T23:29:41.350 回答
6

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

于 2013-01-08T23:32:09.107 回答