C++11 为什么这个c++;示例未在MSVC上编译? 例子

C++11 为什么这个c++;示例未在MSVC上编译? 例子,c++11,visual-studio-2015,C++11,Visual Studio 2015,为什么下面的代码段不构建在MSVC(2015,64位)上。它是其他代码的简化版本,这就是它看起来有点奇怪的原因 #include <string> template<class T> class A {}; template<class T> using AA = A<T>; //duplicate using statement template<class T> using AA = A<T>; int main

为什么下面的代码段不构建在MSVC(2015,64位)上。它是其他代码的简化版本,这就是它看起来有点奇怪的原因

#include <string>

template<class T>
class A {};

template<class T>
using AA = A<T>;

//duplicate using statement
template<class T>
using AA = A<T>;

int main(int argc, char *argv[]) {
    return 0;
}
#包括
模板
A类{};
模板
使用AA=A;
//重复使用语句
模板
使用AA=A;
int main(int argc,char*argv[]){
返回0;
}
编译错误 C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xstring(780):错误C2665:“std::\u String\u alloc::\u String\u alloc”:3个重载都不能转换所有参数类型 具有 [ _Elem=char, _Alloc=std::分配器 ]

C:\ProgramFiles(x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xstring(744):注意:可以是“std::\u String\u alloc::\u String\u alloc(std:\u String\u alloc&)” 具有 [ _Elem=char, _Alloc=std::分配器 ]

C:\ProgramFiles(x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xstring(744):注意:或“std:\u String\u alloc::\u String\u alloc(const std::\u String\u alloc&)” 具有 [ _Elem=char, _Alloc=std::分配器 ]

C:\ProgramFiles(x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xstring(587):注意:或“std:_String\u alloc::_String\u alloc(void)”命令 具有 [ _Elem=char, _Alloc=std::分配器 ]

C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xstring(780):注意:在尝试匹配参数列表(std:_Wrap_alloc)时

C:\ProgramFiles(x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xstring(775):注意:在编译类模板成员函数“std::basic_string::basic_string(const std::basic_string&)”时

C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\system\u error(522):注意:请参阅正在编译的函数模板实例化“std::basic\u string::basic\u string(const std::basic\u string&)”的参考

C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\stdexcept(21):注意:请参阅正在编译的类模板实例化“std::basic_string”的参考

条件 如果

  • 基于linux或mac和gcc构建
  • #include
    已删除
  • 删除重复的using语句
建筑
通过使用Microsoft(R)C/C++优化编译器版本19.00.24210 for x64在Windows 8.1上执行
cl main.cpp
构建。

在我看来像是一个VC错误。这看起来像是有史以来最奇怪的错误+1如果您想看到更奇怪的东西,请将
#include
移到末尾!它在(19.00.23506(x64))上显示不同的错误,但在(19.10.24903.0(x86))上成功编译。它可能已经修复,或者它可能是一个仅限x64的问题,或者它可能取决于更多的细节,而不仅仅是编译器版本。我在此处与microsoft打开了一个错误报告: