gpt4 book ai didi

c++ - 实例化模板函数时出现奇怪的错误

转载 作者:行者123 更新时间:2023-11-28 03:34:38 25 4
gpt4 key购买 nike

我有以下模板函数:

template <std::size_t first, std::size_t last, typename T>
bool in_range(T& in)
{
for(auto i = in.begin(); i!=in.end(); ++i)
if(*i<first || *i>last)
return false;
return true;
}

但是当我尝试这样使用它时:

std::vector<int> test;
test.push_back(1);
test.push_back(5);
test.push_back(6);

std::cout<<in_range<4,7>(test);

我收到这个奇怪的错误:

main.cpp: In instantiation of 'bool in_range(T&) [with long long unsigned int first = 4ull; long long unsigned int last = 7ull; T = std::vector<int>]':
main.cpp:31:34: required from here

我做错了什么?

编辑:完整构建日志:http://pastebin.com/Cwemq2Hk

最佳答案

如果我在启用 C++11 支持的情况下构建它,那么它会编译。 Here is a demonstation .

在 C++11 之前,auto 具有不同的含义,因此 auto i = ... 是无效的 - 它声明了一个没有类型的变量。

我猜你正在使用 GCC;根据版本,您需要指定 -std=c++0x-std=c++11 作为命令行选项。

关于c++ - 实例化模板函数时出现奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11364790/

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