[base] Implement Extent in base::span

This change implements static extents in base::span. These spans can be
automatically created from array types, where the size is known at
compile time. Furthermore, they allow for compile time checks when
invoking templated first(), last() and subspan().

Bug: 828324
Change-Id: Ice309ab8d377a91331170bfba8ac82a31dad7cd1
Reviewed-on: https://chromium-review.googlesource.com/1021735
Commit-Queue: Jan Wilken Dörrie <jdoerrie@chromium.org>
Reviewed-by: David Benjamin <davidben@chromium.org>
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#555333}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 2917a61e01e6138a09ea1c9239c6c95b1e711b22
2 files changed
tree: 166fdf4b353c3aa9dbc5466cb92e7dab4c1b0ea0
  1. aead.cc
  2. aead.h
  3. aead_unittest.cc
  4. apple_keychain.h
  5. apple_keychain_ios.mm
  6. apple_keychain_mac.mm
  7. BUILD.gn
  8. capi_util.cc
  9. capi_util.h
  10. crypto_export.h
  11. DEPS
  12. ec_private_key.cc
  13. ec_private_key.h
  14. ec_private_key_unittest.cc
  15. ec_signature_creator.cc
  16. ec_signature_creator.h
  17. ec_signature_creator_impl.cc
  18. ec_signature_creator_impl.h
  19. ec_signature_creator_unittest.cc
  20. encryptor.cc
  21. encryptor.h
  22. encryptor_unittest.cc
  23. hkdf.cc
  24. hkdf.h
  25. hkdf_unittest.cc
  26. hmac.cc
  27. hmac.h
  28. hmac_unittest.cc
  29. mac_security_services_lock.cc
  30. mac_security_services_lock.h
  31. mock_apple_keychain.cc
  32. mock_apple_keychain.h
  33. mock_apple_keychain_ios.cc
  34. mock_apple_keychain_mac.cc
  35. nss_crypto_module_delegate.h
  36. nss_key_util.cc
  37. nss_key_util.h
  38. nss_key_util_unittest.cc
  39. nss_util.cc
  40. nss_util.h
  41. nss_util_internal.h
  42. nss_util_unittest.cc
  43. openssl_util.cc
  44. openssl_util.h
  45. OWNERS
  46. p224.cc
  47. p224.h
  48. p224_spake.cc
  49. p224_spake.h
  50. p224_spake_unittest.cc
  51. p224_unittest.cc
  52. random.cc
  53. random.h
  54. random_unittest.cc
  55. rsa_private_key.cc
  56. rsa_private_key.h
  57. rsa_private_key_unittest.cc
  58. scoped_capi_types.h
  59. scoped_nss_types.h
  60. scoped_test_nss_chromeos_user.cc
  61. scoped_test_nss_chromeos_user.h
  62. scoped_test_nss_db.cc
  63. scoped_test_nss_db.h
  64. scoped_test_system_nss_key_slot.cc
  65. scoped_test_system_nss_key_slot.h
  66. secure_hash.cc
  67. secure_hash.h
  68. secure_hash_unittest.cc
  69. secure_util.cc
  70. secure_util.h
  71. sha2.cc
  72. sha2.h
  73. sha2_unittest.cc
  74. signature_creator.cc
  75. signature_creator.h
  76. signature_creator_unittest.cc
  77. signature_verifier.cc
  78. signature_verifier.h
  79. signature_verifier_unittest.cc
  80. symmetric_key.cc
  81. symmetric_key.h
  82. symmetric_key_unittest.cc
  83. wincrypt_shim.h