/* Basic container usage. */ #include #include #include #include #include #if __cplusplus >= 201103L #include #include #include #include #endif bool vector_test() { bool ok; #pragma omp target map(from: ok) { std::vector vector; ok = vector.empty(); } return ok; } bool deque_test() { bool ok; #pragma omp target map(from: ok) { std::deque deque; ok = deque.empty(); } return ok; } bool list_test() { bool ok; #pragma omp target map(from: ok) { std::list list; ok = list.empty(); } return ok; } bool map_test() { bool ok; #pragma omp target map(from: ok) { std::map map; ok = map.empty(); } return ok; } bool set_test() { bool ok; #pragma omp target map(from: ok) { std::set set; ok = set.empty(); } return ok; } bool multimap_test() { bool ok; #pragma omp target map(from: ok) { std::multimap multimap; ok = multimap.empty(); } return ok; } bool multiset_test() { bool ok; #pragma omp target map(from: ok) { std::multiset multiset; ok = multiset.empty(); } return ok; } #if __cplusplus >= 201103L bool array_test() { static constexpr std::size_t array_size = 42; bool ok; #pragma omp target map(from: ok) { std::array array{}; ok = array[0] == 0 && array[array_size - 1] == 0; } return ok; } bool forward_list_test() { bool ok; #pragma omp target map(from: ok) { std::forward_list forward_list; ok = forward_list.empty(); } return ok; } bool unordered_map_test() { bool ok; #pragma omp target map(from: ok) { std::unordered_map unordered_map; ok = unordered_map.empty(); } return ok; } bool unordered_set_test() { bool ok; #pragma omp target map(from: ok) { std::unordered_set unordered_set; ok = unordered_set.empty(); } return ok; } bool unordered_multimap_test() { bool ok; #pragma omp target map(from: ok) { std::unordered_multimap unordered_multimap; ok = unordered_multimap.empty(); } return ok; } bool unordered_multiset_test() { bool ok; #pragma omp target map(from: ok) { std::unordered_multiset unordered_multiset; ok = unordered_multiset.empty(); } return ok; } #else bool array_test() { return true; } bool forward_list_test() { return true; } bool unordered_map_test() { return true; } bool unordered_set_test() { return true; } bool unordered_multimap_test() { return true; } bool unordered_multiset_test() { return true; } #endif int main() { const bool vec_res = vector_test(); __builtin_printf("vector : %s\n", vec_res ? "PASS" : "FAIL"); const bool deque_res = deque_test(); __builtin_printf("deque : %s\n", deque_res ? "PASS" : "FAIL"); const bool list_res = list_test(); __builtin_printf("list : %s\n", list_res ? "PASS" : "FAIL"); const bool map_res = map_test(); __builtin_printf("map : %s\n", map_res ? "PASS" : "FAIL"); const bool set_res = set_test(); __builtin_printf("set : %s\n", set_res ? "PASS" : "FAIL"); const bool multimap_res = multimap_test(); __builtin_printf("multimap : %s\n", multimap_res ? "PASS" : "FAIL"); const bool multiset_res = multiset_test(); __builtin_printf("multiset : %s\n", multiset_res ? "PASS" : "FAIL"); const bool array_res = array_test(); __builtin_printf("array : %s\n", array_res ? "PASS" : "FAIL"); const bool forward_list_res = forward_list_test(); __builtin_printf("forward_list : %s\n", forward_list_res ? "PASS" : "FAIL"); const bool unordered_map_res = unordered_map_test(); __builtin_printf("unordered_map : %s\n", unordered_map_res ? "PASS" : "FAIL"); const bool unordered_set_res = unordered_set_test(); __builtin_printf("unordered_set : %s\n", unordered_set_res ? "PASS" : "FAIL"); const bool unordered_multimap_res = unordered_multimap_test(); __builtin_printf("unordered_multimap: %s\n", unordered_multimap_res ? "PASS" : "FAIL"); const bool unordered_multiset_res = unordered_multiset_test(); __builtin_printf("unordered_multiset: %s\n", unordered_multiset_res ? "PASS" : "FAIL"); const bool ok = vec_res && deque_res && list_res && map_res && set_res && multimap_res && multiset_res && array_res && forward_list_res && unordered_map_res && unordered_set_res && unordered_multimap_res && unordered_multiset_res; return ok ? 0 : 1; }