C++ 此处不允许在C++;VS2017 bool-isEven(int-val){ 返回值%2==0; } 布尔isOdd(内部值){ 返回值%2!=0; } 样板 int count_函数(迭代器开始、迭代器结束、自动条件){ 整数计数=0; 对于(;开始!=结束;++开始){ 如果(标准(*开始)){ 计数++; } } 返回计数; }

C++ 此处不允许在C++;VS2017 bool-isEven(int-val){ 返回值%2==0; } 布尔isOdd(内部值){ 返回值%2!=0; } 样板 int count_函数(迭代器开始、迭代器结束、自动条件){ 整数计数=0; 对于(;开始!=结束;++开始){ 如果(标准(*开始)){ 计数++; } } 返回计数; },c++,C++,上面是我的代码,auto-before条件给出错误“auto现在允许在这里”。我想为这个函数提供isEven/isOdd标准 为什么呢 我尝试了int,bool-这返回了一些问题。函数参数中不允许使用关键字auto。如果要使用不同的数据类型,则需要使用模板 bool isEven(int val) { return val % 2 == 0; } bool isOdd(int val) { return val % 2 != 0; } template<class It

上面是我的代码,auto-before条件给出错误“auto现在允许在这里”。我想为这个函数提供isEven/isOdd标准

为什么呢


我尝试了int,bool-这返回了一些问题。

函数参数中不允许使用关键字
auto
。如果要使用不同的数据类型,则需要使用模板

bool isEven(int val) {
    return val % 2 == 0;
}

bool isOdd(int val) {
    return val % 2 != 0;
}

template<class Iterator>
int count_function(Iterator start, Iterator end, auto criteria) {
    int count = 0;
    for (; start != end; ++start) {
        if (criteria(*start)) {
            count++;
        }
    }
    return count;
}
模板
int count_函数(迭代器开始、迭代器结束、T条件){
整数计数=0;
对于(;开始!=结束;++开始){
如果(标准(*开始)){
计数++;
}
}
返回计数;
}

函数参数中不允许使用关键字
auto
。如果要使用不同的数据类型,则需要使用模板

bool isEven(int val) {
    return val % 2 == 0;
}

bool isOdd(int val) {
    return val % 2 != 0;
}

template<class Iterator>
int count_function(Iterator start, Iterator end, auto criteria) {
    int count = 0;
    for (; start != end; ++start) {
        if (criteria(*start)) {
            count++;
        }
    }
    return count;
}
模板
int count_函数(迭代器开始、迭代器结束、T条件){
整数计数=0;
对于(;开始!=结束;++开始){
如果(标准(*开始)){
计数++;
}
}
返回计数;
}

正常函数参数中不允许自动。它只允许在lambda参数中使用。C++20将添加此功能:)

另请参见“缩写函数模板”,此处:

现在,您可以使用lambda声明函数:

template<class Iterator, class T>
int count_function(Iterator start, Iterator end, T criteria) {
    int count = 0;
    for (; start != end; ++start) {
        if (criteria(*start)) {
            count++;
        }
    }
    return count;
}

正常函数参数中不允许使用Auto。它只允许在lambda参数中使用。C++20将添加此功能:)

另请参见“缩写函数模板”,此处:

现在,您可以使用lambda声明函数:

template<class Iterator, class T>
int count_function(Iterator start, Iterator end, T criteria) {
    int count = 0;
    for (; start != end; ++start) {
        if (criteria(*start)) {
            count++;
        }
    }
    return count;
}

“函数参数中不允许使用关键字auto。”-它位于lambda函数中。“函数参数中不允许使用关键字auto。”-它位于lambda函数中。相关:相关: