На самом деле кто-то в комментарии, ник , помог мне ответить. std::copy
может быть ответом. Даже при том, что он все еще использует итеративный способ, все же лучше использовать его, а не создавать код.
#include <iostream>
int main() {
int arr[3] = {0, 1, 2};
int *p_arr = new int[3];
int length = sizeof(arr)/sizeof(int);
std::copy(arr+0, arr+length, p_arr+0); // Copy elements
cout << sizeof(arr[0])/sizeof(int) << endl << *(p_arr+2);
}