#include #include #include int main() { std::vector source{2, 4}; auto snapshot = source; auto& alias = source; const auto& view = source; snapshot[0] = 9; assert(source[0] == 2 && snapshot[0] == 9); alias[1] = 7; assert(source[1] == 7 && view[1] == 7); static_assert(std::is_same>::value, "value copy"); static_assert(std::is_same&>::value, "const alias"); int samples[3] = {1, 2, 3}; auto pointer = samples; auto& whole = samples; static_assert(std::is_same::value, "array decays"); static_assert(std::is_same::value, "bound retained"); whole[2] = 8; assert(pointer[2] == 8 && samples[2] == 8); }