diff --git a/CMakeLists.txt b/CMakeLists.txt index aaeb42034749a7566798b2b0dda4589d2ac2b1fb..cb2c664c7e61702081fc6b5efedb08ae30dbe4d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,6 +90,11 @@ if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSI list(APPEND vkcv_definitions __NO_SEMAPHORES__) endif() +if (((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "4.0.0")) OR + ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "12.0.0"))) + list(APPEND vkcv_definitions VKCV_UNORDERED_CONTAINER) +endif() + # configure everything to use the required dependencies include(${vkcv_config}/Libraries.cmake) diff --git a/include/vkcv/Container.hpp b/include/vkcv/Container.hpp index 20c79557e6faa6d4e6d735cec8d89159357ddfd3..56e1199c2e1a6a85362de402adf503214c8bb6ba 100644 --- a/include/vkcv/Container.hpp +++ b/include/vkcv/Container.hpp @@ -6,18 +6,36 @@ */ #include <vector> + +#ifdef VKCV_UNORDERED_CONTAINER #include <unordered_map> #include <unordered_set> +#else +#include <map> +#include <set> +#endif namespace vkcv { - template<typename K, typename V> - using Dictionary = std::unordered_map<K, V>; - template<typename T> using Vector = std::vector<T>; + +#ifdef VKCV_UNORDERED_CONTAINER + template<typename K, typename V> + using Dictionary = std::unordered_map<K, V>; + template<typename T> using Set = std::unordered_set<T>; + +#else + + template<typename K, typename V> + using Dictionary = std::map<K, V>; + template<typename T> + using Set = std::set<T>; + +#endif + }