I have the following program:
#include <iostream>
#include <string>
using namespace std;
using int_arr = int[3];
int& f(int_arr& arr, int index)
{
return arr[index];
}
int main() {
int arr[3] = {1, 2, 3};
int& g = f(arr, 0);
g = 5;
std::cout << arr[0] << std::endl;
}
Is arr[index]
returned by f considered a dangling reference?
I don't think this is a dangling reference since the arr
object continues to exist even after f
returns (so the reference is valid), but I wanted to confirm my understanding. I compiled this with -fsanitize=undefined
and it compiled fine and produced the expected output.