Visual Studio 2010 的模板问题
Template trouble with Visual Studio 2010
在Linux中使用GCC,下面的代码编译得很好。但是对于Visual Studio,会发生错误C2893。你有什么想法吗?
struct A
{
};
struct B
{
typedef A Data;
};
struct C
{
typedef B Data;
};
template<typename Type>
typename Type::Data::Data test( Type in)
{
return Type::Data::Data();
}
int main(){
C c;
C::Data::Data a;//works
test(c);//error C2893: The specialization of the function template 'Type :: Data :: {ctor} test (Type)' failed
}
多谢
Avakar的解决方案:因为Data::D ata指的是Data类型的构造函数,所以你必须使用这个习惯用法:
typename identity<typename Type::Data>::type::Data
编译器无法专用化函数模板。此错误可能有多种原因。通常,解决 C2893 错误的方法是查看函数的签名并确保可以实例化每种类型。
相关文章:
- Visual Studio中的函数声明和函数定义问题
- Visual Studio 2017循环自动向量化问题
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 在Visual Studio 2019中保存时ReadDirectoryChangesW文件名的问题
- Qt Visual Studio 2015 加载项编译问题
- 在Visual Studio 2017中使用c ++组件构建python解决方案时出现问题
- 在 Android Studio 中使用 C++ 共享对象时出现问题
- Visual Studio 2017 中的 cpprestapi 问题找不到 POST/GET 常量
- 将代码从 32 位迁移到 64 位时出现问题 Visual Studio 2010
- 在Visual Studio代码中包含自定义c++库的问题
- Visual Studio 2017 生成工具与枚举类型的问题
- C++编译Qt for Visual Studio 2017的问题
- Visual Studio 2015 安装问题
- 在Visual "Microsoft studio 2019"上设置OpenCV 4.1.1时遇到问题?(非法指令。
- 在C++中使用 Visual Studio 读取文本文件时遇到问题
- Visual Studio 中的 Hello World C++ 应用程序 - 关于预编译标头不同的问题
- 在Android Studio项目中使用tensorflow lite C++API的问题
- 在 Visual Studio 的 Windows 上安装 MPIR 时遇到问题
- 带有SDL2问题的Visual Studio代码
- Android Studio Canary 3.0 中的 NDK 问题