#include <xtd/xtd>
auto main() -> int {
auto a = array {1, 2, 3, 4, 5};
try {
println("a[-1] = {}", a[-1]);
} catch (const index_out_of_range_exception& e) {
println("a[-1] Throws {}", e);
}
println("a[0] = {}", a[0]);
println("a[1] = {}", a[1]);
println("a[2] = {}", a[2]);
println("a[3] = {}", a[3]);
println("a[4] = {}", a[4]);
try {
println("a[5] = {}", a[5]);
} catch (const index_out_of_range_exception& e) {
println("a[5] Throws {}", e);
}
println();
try {
println("a[bpos-1] = {}", a[bpos-1]);
} catch (const index_out_of_range_exception& e) {
println("a[bpos-1] Throws {}", e);
}
println("a[bpos] = {}", a[bpos]);
println("a[bpos+1] = {}", a[bpos+1]);
println("a[bpos+2] = {}", a[bpos+2]);
println("a[bpos+3] = {}", a[bpos+3]);
println("a[bpos+4] = {}", a[bpos+4]);
try {
println("a[bpos+5] = {}", a[bpos+5]);
} catch (const index_out_of_range_exception& e) {
println("a[bpos+5] Throws {}", e);
}
println();
try {
println("a[~0] = {}", a[~0]);
} catch (const index_out_of_range_exception& e) {
println("a[~0] Throws {}", e);
}
println("a[~1] = {}", a[~1]);
println("a[~2] = {}", a[~2]);
println("a[~3] = {}", a[~3]);
println("a[~4] = {}", a[~4]);
println("a[~5] = {}", a[~5]);
try {
println("a[~6] = {}", a[~6]);
} catch (const index_out_of_range_exception& e) {
println("a[~6] Throws {}", e);
}
println();
try {
println("a[-1] = {}", a[-1]);
} catch (const index_out_of_range_exception& e) {
println("a[-1] Throws {}", e);
}
println("a[-2] = {}", a[-2]);
println("a[-3] = {}", a[-3]);
println("a[-4] = {}", a[-4]);
println("a[-5] = {}", a[-5]);
println("a[-6] = {}", a[-6]);
try {
println("a[-7] = {}", a[-7]);
} catch (const index_out_of_range_exception& e) {
println("a[-7] Throws {}", e);
}
println();
try {
println("a[epos+1] = {}", a[epos+1]);
} catch (const index_out_of_range_exception& e) {
println("a[epos+1] Throws {}", e);
}
println("a[epos] = {}", a[epos]);
println("a[epos-1] = {}", a[epos-1]);
println("a[epos-2] = {}", a[epos-2]);
println("a[epos-3] = {}", a[epos-3]);
println("a[epos-4] = {}", a[epos-4]);
try {
println("a[epos-5] = {}", a[epos-5]);
} catch (const index_out_of_range_exception& e) {
println("a[epos-5] Throws {}", e);
}
println();
try {
println("a[npos] = {}", a[npos]);
} catch (const index_out_of_range_exception& e) {
println("a[npos] Throws {}", e);
}
}