It is C#, not C++ 
Can you give a real example from the indicators? It would help to explain better.
Secondly, previous bar value comes in to play in the logic calculation, where trading signals are raised. In some custom indis you might find PBV cut out and taken into account already in the indi value calculation block.
Thirdly, if only open prices are used in the calculation, PBV is not used, in FSB PBV is automatically switched off. If, for example, there are other price points used in addition (or without open prices), PBV is a must.
Taking into account those points above, in your abstract example case nr 1 doesn't seem to need the use of PBV, but the 2nd case needs it.
Finally, I would not describe it as a "shift". It is extremely vital necessity for having a reliable and reproducible backtest result. It is a matter of using the latest confirmed datapoints! It doesn't shift, but uses latest closed values, which do not change.