Replaced is_default_constructible by IsOptional