gpt4 book ai didi

c++ - 为什么创建本地类型 vector 失败

转载 作者:IT老高 更新时间:2023-10-28 23:00:49 27 4
gpt4 key购买 nike

#include <iostream>
#include <vector>

int main()
{
class Int {
public:
Int(int _i) : i(i) {}
private:
int i;
};

std::vector<Int> VI;
}

我尝试编译上面的代码,得到如下错误信息:

foo.cc: In function 'int main()':
foo.cc:13: error: 'main()::Int' uses local type 'main()::Int'
foo.cc:13: error: trying to instantiate 'template<class _Alloc> class std::allocator'
foo.cc:13: error: template argument 2 is invalid
foo.cc:13: error: invalid type in declaration before ';' token

谁能告诉我为什么我不能在 C++ 中做这样的事情?提前致谢。

最佳答案

标准明确禁止在 14.3.1[temp.arg.type]/2 中使用本地类来实例化模板。

A local type, a type with no linkage, an unnamed type or a type compounded from any of these types shall not be used as a template-argument for a template type-parameter.

这将在 C++0x 中更改。

关于c++ - 为什么创建本地类型 vector 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3184939/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com