diff --git a/CMakeLists.txt b/CMakeLists.txt index 9b2b842c9..bc892b033 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,15 @@ if (CMAKE_CXX_COMPILER MATCHES ".*clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-uninitialized") endif () +check_cxx_source_compiles( + "#include + int main() { + std::unordered_map m; + return 0; + } + " + USE_STD_UNORDERED_MAP) + if (UNIX AND NOT APPLE) set(LINUX 1) endif (UNIX AND NOT APPLE) diff --git a/src/config.h.in b/src/config.h.in index 30c7c6cea..97e5803c1 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -43,5 +43,6 @@ #cmakedefine IMOBILEDEVICE_USES_UDIDS #cmakedefine USE_INSTALL_PREFIX #cmakedefine USE_SYSTEM_PROJECTM +#cmakedefine USE_STD_UNORDERED_MAP #endif // CONFIG_H_IN diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index 05dddb93c..0209c4cc8 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -64,15 +64,12 @@ #include #include -#ifdef Q_OS_DARWIN - #include - - // I'm sorry... - namespace std { - using tr1::unordered_map; - } -#else +#ifdef USE_STD_UNORDERED_MAP #include + using std::unordered_map; +#else + #include + using std::tr1::unordered_map; #endif using smart_playlists::Generator; @@ -1944,7 +1941,7 @@ struct SongSimilarEqual { void Playlist::RemoveDuplicateSongs() { QList rows_to_remove; - std::unordered_map unique_songs; + unordered_map unique_songs; for (int row = 0; row < items_.count(); ++row) { PlaylistItemPtr item = items_[row];