我尝试编写一个forEach方法(我知道已经存在但我会自己尝试)
这是我的代码:
#include <iostream>
#include <array>
#include <functional>
using namespace std;
template<typename T, std::size_t SIZE>
void forEach(std::array<T, SIZE> array, function<void(int)> fun){
    for(auto const & object: array)
        fun(object);
}
int main()
{
    std::array<int, 4> num{1,2,3,4};
    forEach(num, [](int n) -> void { cout << n * n << endl;});
    return 0;
}
Run Code Online (Sandbox Code Playgroud)
这很好用.
现在,当我更改forEach的第二个参数时function<void(int)> fun,function<void(T)> fun它不会编译,我得到错误:
no matching function for call to 'forEach(std::array<int, 4u>&, main()::<lambda(int)>)'
但是当我理解它T应该int在这个例子中.
 
我是否犯了一个思维错误?
为什么它不起作用?
当我这样做的时候它可以工作:
template<typename T, std::size_t SIZE>
void …Run Code Online (Sandbox Code Playgroud) 我有一个小代码来查看它argv的内容
#include <iostream>
using namespace std;
int main(int argc, char** argv){
    cout << "===================" << endl;
    cout << "argc: " << argc << endl << endl;
    cout << "argv[0]: " << argv[0] << endl << endl;
    cout << "argv[1]: " << argv[1] << endl << endl;
    //cout << "argv[2]: " << argv[2] << endl << endl; //Program crash
    cout << "===================" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我启动没有参数的程序时:
argc1 
argv[0]是执行路径
argv[1]应该超出范围,程序应该崩溃,但程序终止像我写return.如果我检查错误级别它是9009 
如果我尝试访问argv[2]程序崩溃按预期 …
如果您使用 LibGdx,它很快就会来到相机和视口。如果您第一次使用相机和视口工作,您会遇到一些关于它如何工作以及如何使用它的问题。所以:
我知道你可以像这样分配一个变量:
double y = 140;
int i = (y > 100) ? y / 2 : y * 2; //shorthand if else
std::cout << i << std::endl;  // 70
Run Code Online (Sandbox Code Playgroud)
或者用以下命令分隔的多个命令,:
double y = 140;
int i = (y > 100) ? (y /= 2, 5) : (y *= 2, 10);
std::cout << i << std::endl; // 5
std::cout << y << std::endl; // 70
Run Code Online (Sandbox Code Playgroud)
但是,我可以使用正常的if else语句执行此操作吗?
我试过这个:
int i = if(y > 100){
            y / 2;
        } else …Run Code Online (Sandbox Code Playgroud)