Why can I execute an operator& from a (*iterator), but can not make copy of value (*iterator) ?
std::vector<int> v;   // yes, container is empty
for (int i = 0; i < 10; ++i) {
    auto it = v.begin();
    std::cout << &*(it) << std::endl;   // 0   <- why not EXC_BAD_ACCESS?
    auto value = *(it);                 // EXC_BAD_ACCESS
    auto address = &value;
}
    
*(it)) always produces an error. Instead all it means is that the behaviour of your code is undefined. For such code questions like 'why' and 'why not' are meaningless.vhas no elements.vfas no elements*itkindof meansv[0]which is UB (index out of range)