aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJordan Maples <jomaples@microsoft.com>2020-08-12 17:14:13 -0700
committerJordan Maples <jomaples@microsoft.com>2020-08-12 17:14:13 -0700
commit74968d3ef87004ac04b6586bfe75e98c693a4c7b (patch)
treebbd4e2b7bdaab7ce2468d0bbec156faf1e715104
parent4da6a264c41c77d8a968c0936688626471671d38 (diff)
parent0c80f51f7c5ae947411906ae5600d46d56e491bf (diff)
downloadplatform_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_util10
-rw-r--r--include/gsl/pointers2
-rw-r--r--tests/CMakeLists.txt55
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}