Предполагая, что переменная `ptr 'не содержит указатель на действительный объект, неопределенное поведение происходит, если программе требуется преобразование lvalue-to-rvalue выражения` * ptr', как указано в [conv.lval](ИСО / МЭК 14882: 2011, стр. 82, 4.1 [# 1]).
Во время оценки `& * ptr 'программе не требуется преобразование lvalue-to-rvalue подвыражения` *ptr ', в соответствии с [expr.unary.op] (ISO / IEC 14882: 2011, стр. 109, 5.3.1 [# 3])
Следовательно, это законно.