What you are saying here with this statement :
"Con("flood_depth_raster","dem")"
Is something like IF (flood_depth_raster is not null or empty, then return the dem raster, there is no else returned).
This would be more properly stated as something like :
Con(IsNull(flood_depth_raster), flood_depth_raster, dem)
I think you can just add the 0.5m to the output like :
Con(IsNull(flood_depth_raster), flood_depth_raster, dem + 0.5)