Просто посмотрел тот же самый луп старым способом или при помощи ново рекомендуемого array_view
int sum(int * arr, size_t size)
{
	int result = 0;
	for (int i = 0; i < size; ++i)
		result += arr[i];
	return result;
}
vs
int sum(gsl::array_view<int> arr)
{
	int result = 0;
	for (int & i : arr)
		result += i;
	return result;	  
}
	push	ebx
	push	esi
	push	edi
	xor	edi, edi
	mov	ebx, ecx
	xor	esi, esi
	npad	7
$LL4@sum:
	add	edi, DWORD PTR [ebx+esi*4]
	inc	esi
	add	esp, 8
	cmp	esi, 7
	jb	SHORT $LL4@sum
	mov	eax, edi
	push	ebp
	mov	ebp, esp
	push	ecx
	mov	eax, DWORD PTR _arr$[ebp]
	mov	ecx, DWORD PTR _arr$[ebp+4]
	push	ebx
	push	esi
	push	edi
	xor	edi, edi
	lea	ebx, DWORD PTR [eax+ecx*4]
	mov	esi, eax
$LL37@sum_arr:
	cmp	esi, ebx
	je	SHORT $LN3@sum_arr
	cmp	esi, eax
	jb	SHORT $LN56@sum_arr
	lea	eax, DWORD PTR [eax+ecx*4]
	cmp	esi, eax
	jae	SHORT $LN56@sum_arr
	add	edi, DWORD PTR [esi]
	mov	ecx, DWORD PTR _arr$[ebp+4]
	add	esp, 8
	mov	eax, DWORD PTR _arr$[ebp]
	add	esi, 4
	jmp	SHORT $LL37@sum_arr
$LN56@sum_arr:
	call	DWORD PTR __imp__terminate
$LN81@sum_arr:
$LN3@sum_arr:
	mov	eax, edi
Компу нужно намного дольше работать чтоб получить тот же результат.
P.S. всяким адептам кричащим «c++ с классами это не c++» не лезьте сюда в тред





