Proposed resolution:
Change [bidirectional.iterators]:
concept BidirectionalIterator<typename X> : ForwardIterator<X> { MoveConstructible postdecrement_result; requires HasDereference<postdecrement_result> && Convertible<HasDereference<postdecrement_result>::result_type, const value_type&> && Convertible<postdecrement_result, const X&>; X& operator--(X&); postdecrement_result operator--(X& r, int);{ X tmp = r; --r; return tmp; } }