Checking for contracts in Constantinople

Right now, in solidity, there are two ways to check for a contract, via extcodesize or by checking if tx.origin == msg.sender.

tx.origin is going to be deprecated.

extcodesize does not work for contracts calling via their constructor.

This should be fixed. A clear way should be presented to check if an address is a contract OR an user, especially when “user wallets” will have actual code in them in the future.

Same concern, have you found the solution?