As I said there is no any great difference. There could be a difference if variable bar had a user-defined type that results in calling its constructor.
To elaborate on what Vlad said:
In example a, bar is pushed onto the stack unconditionally upon entering Foo.
In example b, bar is only pushed onto the stack if Error is false. Assuming that Error is seldom true, bar will almost always get pushed onto the stack, so there is essentially no difference. Given a good optimizing compiler, bar will get assigned to a register, so there will be no push to the stack in either case.
Now as to style, there are two schools of thought.
1) Some feel that defining variables closest to where they are used is advantageous.
2) Others feel that defining variables at the beginning of the function keeps them all in one place and is easier to maintain.
To each his own.