I think,nobody is forced to use inline variables in C++.
It is possible to declare all variables at the start of the block.
However, inline variables make automatic typing possible.
This can be important in templates.
C++:
auto const foo = [&] {do something;}
Delphi:
const foo = procedure begin dosomething; end;
How to do something like this without inline varables?
Maybe it is possible, but probably hairy.
I personally think it is good to have declaration, definition and initialization in one place, and to limit visibility of variables to the block where they are used.