Questo è il tuo codice scritto in maniera più ordinata:
#include <iostream>
using namespace std;
void cat(int ar1[], int ar2[], int l1, int l2)
{
    int LT = l1 + l2;
    int ar3[LT];
    for(int i = 0; i < l1; i++)
    {
        ar3[i] = ar1[i];
    }
    int count = 0;
    for(int j = l1; j < LT; j++)
    {
        ar3[j] = ar2[count];
        count = count + 1;
        for (int f = 0; f < LT; f++)
        {
            cout << ar3[f];
        }
    }
};
int main()
{
    int N1 = 5;
    int N2 = 5;
    int N = N1 + N2;
    int primo[N1];
    int secondo[N2];
    for(int i = 0; i < N1; i++)
    {
        cout << "Dammi un valore per riempire il primo array: ";
        cin >> primo[i];
    }
    for(int j = 0; j < N2; j++)
    {
        cout << "Dammi un valore per riempire il secondo array: ";
        cin >> secondo[j];
    }
    cat(primo, secondo, N1, N2);
}
noti niente di strano?
P.S.
Secondo lo standard C++ la dimensione di un array statico deve essere una costante.