diff options
| author | Jordan Maples <jomaples@microsoft.com> | 2020-08-12 17:14:13 -0700 |
|---|---|---|
| committer | Jordan Maples <jomaples@microsoft.com> | 2020-08-12 17:14:13 -0700 |
| commit | 74968d3ef87004ac04b6586bfe75e98c693a4c7b (patch) | |
| tree | bbd4e2b7bdaab7ce2468d0bbec156faf1e715104 | |
| parent | 4da6a264c41c77d8a968c0936688626471671d38 (diff) | |
| parent | 0c80f51f7c5ae947411906ae5600d46d56e491bf (diff) | |
| download | platform_external_Microsoft-GSL-74968d3ef87004ac04b6586bfe75e98c693a4c7b.tar.gz platform_external_Microsoft-GSL-74968d3ef87004ac04b6586bfe75e98c693a4c7b.tar.bz2 platform_external_Microsoft-GSL-74968d3ef87004ac04b6586bfe75e98c693a4c7b.zip | |
Merge branch 'master' into exception_fix_new_file
| -rw-r--r-- | include/gsl/gsl_util | 10 | ||||
| -rw-r--r-- | include/gsl/pointers | 2 | ||||
| -rw-r--r-- | tests/CMakeLists.txt | 55 |
3 files changed, 39 insertions, 28 deletions
diff --git a/include/gsl/gsl_util b/include/gsl/gsl_util index d771414..585b3f9 100644 --- a/include/gsl/gsl_util +++ b/include/gsl/gsl_util @@ -32,6 +32,12 @@ #endif // _MSC_VER +#if defined(__cplusplus) && (__cplusplus >= 201703L) +#define GSL_NODISCARD [[nodiscard]] +#else +#define GSL_NODISCARD +#endif // defined(__cplusplus) && (__cplusplus >= 201703L) + namespace gsl { // @@ -67,13 +73,13 @@ private: // finally() - convenience function to generate a final_action template <class F> -final_action<F> finally(const F& f) noexcept +GSL_NODISCARD final_action<F> finally(const F& f) noexcept { return final_action<F>(f); } template <class F> -final_action<F> finally(F&& f) noexcept +GSL_NODISCARD final_action<F> finally(F&& f) noexcept { return final_action<F>(std::forward<F>(f)); } diff --git a/include/gsl/pointers b/include/gsl/pointers index 0ec0fc3..bb80b92 100644 --- a/include/gsl/pointers +++ b/include/gsl/pointers @@ -63,7 +63,7 @@ template <class T> class not_null { public: - static_assert(std::is_assignable<T&, std::nullptr_t>::value, "T cannot be assigned nullptr."); + static_assert(std::is_convertible<decltype(std::declval<T>() != nullptr), bool>::value, "T cannot be compared to nullptr."); template <typename U, typename = std::enable_if_t<std::is_convertible<U, T>::value>> constexpr not_null(U&& u) : ptr_(std::forward<U>(u)) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2bd1bbe..a4bd7e6 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,36 +1,41 @@ cmake_minimum_required(VERSION 3.0.2) project(GSLTests CXX) +include(FindPkgConfig) # will make visual studio generated project group files set_property(GLOBAL PROPERTY USE_FOLDERS ON) -configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt) -execute_process( - COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . - RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download -) -if(result) - message(FATAL_ERROR "CMake step for googletest failed: ${result}") -endif() +pkg_search_module(GTestMain gtest_main) +if (NOT GTestMain_FOUND) + configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt) + execute_process( + COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download + ) + if(result) + message(FATAL_ERROR "CMake step for googletest failed: ${result}") + endif() -execute_process( - COMMAND ${CMAKE_COMMAND} --build . - RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download -) -if(result) - message(FATAL_ERROR "CMake step for googletest failed: ${result}") -endif() + execute_process( + COMMAND ${CMAKE_COMMAND} --build . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download + ) + if(result) + message(FATAL_ERROR "CMake step for googletest failed: ${result}") + endif() -set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) + set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) + set(GTestMain_LIBRARIES gtest_main) -add_subdirectory( - ${CMAKE_CURRENT_BINARY_DIR}/googletest-src - ${CMAKE_CURRENT_BINARY_DIR}/googletest-build - EXCLUDE_FROM_ALL -) + add_subdirectory( + ${CMAKE_CURRENT_BINARY_DIR}/googletest-src + ${CMAKE_CURRENT_BINARY_DIR}/googletest-build + EXCLUDE_FROM_ALL + ) +endif() if (MSVC AND (GSL_CXX_STANDARD EQUAL 17)) set(GSL_CPLUSPLUS_OPT -Zc:__cplusplus -permissive-) @@ -149,7 +154,7 @@ function(add_gsl_test name) target_link_libraries(${name} GSL gsl_tests_config - gtest_main + ${GTestMain_LIBRARIES} ) add_test( ${name} @@ -254,7 +259,7 @@ function(add_gsl_test_noexcept name) target_link_libraries(${name} GSL gsl_tests_config_noexcept - gtest_main + ${GTestMain_LIBRARIES} ) add_test( ${name} |
