为什么这个c ++示例不能在MSVC上编译?

时间:2017-01-14 10:02:36

标签: 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(int argc, char *argv[]) {
    return 0;
}

编译错误

  

C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ INCLUDE \ xstring(780):错误C2665:&#39; std :: _ St​​ring_alloc&lt; std :: _ St​​ring_base_types&lt; _Elem,_Alloc&gt;&gt;: :_String_alloc&#39;:3个重载中没有一个可以转换所有参数类型           同           [               _Elem =炭,               _Alloc =标准::分配器&LT;炭&GT;           ]

     

C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ INCLUDE \ xstring(744):注意:可能是&#39; std :: _ St​​ring_alloc&lt; std :: _ St​​ring_base_types&lt; _Elem,_Alloc&gt;&gt; :: _ St​​ring_alloc(std :: _ St​​ring_alloc&lt; std :: _ St​​ring_base_types&lt; _Elem,_Alloc&gt;&gt;&amp;&amp;)&#39;           同           [               _Elem =炭,               _Alloc =标准::分配器&LT;炭&GT;           ]

     

C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ INCLUDE \ xstring(744):注意:或&#39; std :: _ St​​ring_alloc&lt; std :: _ St​​ring_base_types&lt; _Elem,_Alloc&gt;&gt;: :_String_alloc(const std :: _ St​​ring_alloc&lt; std :: _ St​​ring_base_types&lt; _Elem,_Alloc&gt;&gt;&amp;)&#39;           同           [               _Elem =炭,               _Alloc =标准::分配器&LT;炭&GT;           ]

     

C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ INCLUDE \ xstring(587):注意:或者&#39; std :: _ St​​ring_alloc&lt; std :: _ St​​ring_base_types&lt; _Elem,_Alloc&gt;&gt;: :_String_alloc(无效)&#39;           同           [               _Elem =炭,               _Alloc =标准::分配器&LT;炭&GT;           ]

     

C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ INCLUDE \ xstring(780):注意:尝试匹配参数列表&#39;(std :: _ Wrap_alloc&lt; std :: allocator&lt;炭&GT;&GT;)&#39;

     

C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ INCLUDE \ xstring(775):注意:编译类模板成员函数&#39; std :: basic_string&lt; char,std :: char_traits&lt; char&gt;,std :: allocator&lt; char&gt;&gt; :: basic_string(const std :: basic_string&lt; char,std :: char_traits&lt; char&gt;,std :: allocator&lt; char&gt;&gt;&amp;)&#39;

     

C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ INCLUDE \ system_error(522):注意:请参阅函数模板实例化参考&#39; std :: basic_string&lt; char,std :: char_traits&lt; char&gt;,std :: allocator&lt; char&gt;&gt; :: basic_string(const std :: basic_string&lt; char,std :: char_traits&lt; char&gt;,std :: allocator&lt; char&gt;&gt;&amp;)&#39;正在编制

     

C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ INCLUDE \ stdexcept(21):注意:请参阅类模板实例化&#39; std :: basic_string&lt; char,std :: char_traits&lt;炭&GT;,的std ::分配器&LT;炭&GT;&GT;&#39;正在编制

条件

如果

没有错误
  • 构建于linux或Mac上,使用gcc
  • #include <string>已删除
  • 重复使用语句已删除

建筑

在Windows 8.1上使用Microsoft(R)C / C ++优化编译器版本19.00.24210 for x64进行构建{/ 1}。

0 个答案:

没有答案