LLVM āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž āĻŽāĻŋāĻļāĻ¨-āĻ¸āĻŽāĻžāĻ˛ā§āĻāĻ¨āĻžāĻŽā§āĻ˛āĻ C++ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋāĻ° āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻā§āĻ°āĻĻāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ˛āĻā§āĻˇā§āĻ¯ā§ āĻāĻŦāĻ āĻŦāĻžāĻĢāĻžāĻ° āĻāĻāĻžāĻ°āĻ°āĻžāĻ¨ā§āĻ° āĻāĻžāĻ°āĻŖā§ āĻ¸ā§āĻˇā§āĻ āĻ¤ā§āĻ°ā§āĻāĻŋāĻā§āĻ˛āĻŋ āĻĻā§āĻ° āĻāĻ°āĻžāĻ° āĻāĻĒāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻĻāĻžāĻ¨ā§āĻ° āĻ˛āĻā§āĻˇā§āĻ¯ā§ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻāĻ°ā§āĻā§āĻ¨āĨ¤ āĻāĻžāĻāĻāĻŋ āĻĻā§āĻāĻŋ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§āĻ° āĻāĻĒāĻ° āĻĻā§āĻˇā§āĻāĻŋ āĻ¨āĻŋāĻŦāĻĻā§āĻ§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§: āĻāĻāĻāĻŋ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻŽāĻĄā§āĻ˛ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻā§ āĻŦāĻžāĻĢāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ āĻāĻŦāĻ libc++ āĻĢāĻžāĻāĻļāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻāĻ ā§āĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ āĻāĻ°ā§ā§ˇ
C++ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻŽāĻĄā§āĻ˛ āĻšāĻ˛ āĻŦā§āĻ¯āĻŧāĻžāĻ° āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻŦāĻžāĻĢāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻā§āĻ˛āĻžāĻ¸āĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻŋ std::array, std::vector, āĻāĻŦāĻ std::span āĻā§āĻ˛āĻžāĻ¸āĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯ā§āĻā§āĻ˛āĻŋ āĻŦāĻ°āĻžāĻĻā§āĻĻāĻā§āĻ¤ āĻŽā§āĻŽāĻ°āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ°āĻžāĻ¨-āĻāĻžāĻāĻŽ āĻā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻāĻ¨āĻāĻ¨āĻžāĻ¨āĻŋāĻ¤ā§ āĻŦāĻŋāĻĒāĻā§āĻāĻ¨āĻ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻ āĻ¨ā§āĻļā§āĻ˛āĻ¨ā§āĻ° āĻŦāĻŋāĻ°ā§āĻĻā§āĻ§ā§ āĻ˛āĻĄāĻŧāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, "cppcoreguidelines-pro-bounds-pointer-arithmetic" āĻĒāĻ¤āĻžāĻāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻā§āĻ˛ā§āĻ¯āĻžāĻ-āĻāĻžāĻāĻĄāĻŋ'āĻ¸ āĻ˛āĻŋāĻ¨ā§āĻāĻžāĻ° āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻžāĻ° āĻ āĻ¨ā§āĻ°ā§āĻĒ, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻāĻžāĻŖāĻŋāĻ¤āĻŋāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ˛āĻžāĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽā§āĻĒāĻžāĻāĻ˛āĻžāĻ° āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻāĻžāĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻŦā§ āĻ°āĻŋāĻ˛āĻŋāĻ LLVM 16. āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻ¤ā§, āĻā§āĻ˛ā§āĻ¯āĻžāĻ-āĻ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻĒāĻ¤āĻžāĻāĻž āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻŦā§, āĻ¯āĻž āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻ¨āĻ¯āĻŧāĨ¤
āĻāĻāĻŋ libc++-āĻ āĻāĻāĻāĻŋ āĻāĻā§āĻāĻŋāĻ āĻļāĻā§āĻ¤ āĻ¸ā§āĻ°āĻā§āĻˇāĻž āĻŽā§āĻĄ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻž āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻž āĻšāĻ˛ā§, āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽā§ āĻ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻāĻāĻ°āĻŖā§āĻ° āĻĻāĻŋāĻā§ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻŋāĻ¤ āĻāĻ°ā§ āĻāĻŽāĻ¨ āĻāĻŋāĻā§ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻĻā§āĻāĻžāĻŦā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, std::span āĻāĻŦāĻ std::vector āĻā§āĻ˛āĻžāĻ¸ā§, āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻ° āĻŦāĻžāĻāĻ°ā§āĻ° āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ¨āĻŋāĻ°ā§āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻŦā§, āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻāĻŋ āĻā§āĻ°ā§āĻ¯āĻžāĻļ āĻšāĻŦā§āĨ¤ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻāĻ°ā§āĻ¨ āĻ¯ā§ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ˛ā§ āĻ¤āĻž libc++ C++ āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻā§āĻāĻ¤āĻŋāĻĒā§āĻ°ā§āĻŖ āĻ°āĻžāĻāĻŦā§, āĻ¯ā§āĻšā§āĻ¤ā§ āĻ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻāĻāĻ°āĻŖā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻā§āĻāĻžāĻŦā§ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¤āĻžāĻ° āĻĒāĻāĻ¨ā§āĻĻāĻāĻŋ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻāĻĒāĻ° āĻ°āĻ¯āĻŧā§āĻā§, āĻ¯āĻž āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§, āĻ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻāĻāĻ°āĻŖāĻā§ āĻāĻāĻāĻŋ āĻā§āĻ°ā§āĻ¯āĻžāĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻĒā§āĻ°āĻ¸ā§āĻĨāĻžāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĨ¤
libc++-āĻ āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽ āĻā§āĻāĻā§āĻ˛āĻŋāĻā§ āĻĒā§āĻĨāĻāĻāĻžāĻŦā§ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŽāĻ¨ āĻŦāĻŋāĻāĻžāĻā§ āĻŦāĻŋāĻāĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻŋāĻā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻā§āĻ āĻ¯āĻž āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻŦāĻž ABI āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻĢāĻ˛ā§ āĻšāĻ¯āĻŧ āĻ¨āĻž āĻ¤āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ libc++ āĻāĻ° āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻŽā§āĻĄā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻā§āĻĄ āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻāĻŋāĻ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ°ā§ āĻŦā§āĻ¯āĻŧāĻžāĻ° āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻĻāĻŋāĻ¯āĻŧā§ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻāĻŽāĻ¨ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ° āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¨āĻž (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, "āĻ¯āĻĻāĻŋ (āĻ
ā§āĻ¯āĻžāĻ°ā§_āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ°)" construct āĻā§ "if (span.data ()" āĻ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§)āĨ¤ āĻ
ā§āĻ¯āĻžāĻĄāĻāĻžāĻ¸ā§āĻāĻŽā§āĻ¨ā§āĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§ āĻ¨āĻ¯āĻŧ, āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻ¸āĻš āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻāĻžāĻāĻĒ āĻāĻ°āĻ¤ā§āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻ¤ā§āĻ¸: opennet.ru