Merge branch 'master' into exception_fix_new_file

This commit is contained in:
Jordan Maples 2020-08-12 17:14:13 -07:00
commit 74968d3ef8
3 changed files with 41 additions and 30 deletions

View File

@ -32,6 +32,12 @@
#endif // _MSC_VER #endif // _MSC_VER
#if defined(__cplusplus) && (__cplusplus >= 201703L)
#define GSL_NODISCARD [[nodiscard]]
#else
#define GSL_NODISCARD
#endif // defined(__cplusplus) && (__cplusplus >= 201703L)
namespace gsl namespace gsl
{ {
// //
@ -67,13 +73,13 @@ private:
// finally() - convenience function to generate a final_action // finally() - convenience function to generate a final_action
template <class F> 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); return final_action<F>(f);
} }
template <class 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)); return final_action<F>(std::forward<F>(f));
} }

View File

@ -63,7 +63,7 @@ template <class T>
class not_null class not_null
{ {
public: 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>> template <typename U, typename = std::enable_if_t<std::is_convertible<U, T>::value>>
constexpr not_null(U&& u) : ptr_(std::forward<U>(u)) constexpr not_null(U&& u) : ptr_(std::forward<U>(u))

View File

@ -1,37 +1,42 @@
cmake_minimum_required(VERSION 3.0.2) cmake_minimum_required(VERSION 3.0.2)
project(GSLTests CXX) project(GSLTests CXX)
include(FindPkgConfig)
# will make visual studio generated project group files # will make visual studio generated project group files
set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY USE_FOLDERS ON)
configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt) pkg_search_module(GTestMain gtest_main)
execute_process( if (NOT GTestMain_FOUND)
COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)
RESULT_VARIABLE result execute_process(
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
) RESULT_VARIABLE result
if(result) WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download
message(FATAL_ERROR "CMake step for googletest failed: ${result}") )
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(GTestMain_LIBRARIES gtest_main)
add_subdirectory(
${CMAKE_CURRENT_BINARY_DIR}/googletest-src
${CMAKE_CURRENT_BINARY_DIR}/googletest-build
EXCLUDE_FROM_ALL
)
endif() 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)
add_subdirectory(
${CMAKE_CURRENT_BINARY_DIR}/googletest-src
${CMAKE_CURRENT_BINARY_DIR}/googletest-build
EXCLUDE_FROM_ALL
)
if (MSVC AND (GSL_CXX_STANDARD EQUAL 17)) if (MSVC AND (GSL_CXX_STANDARD EQUAL 17))
set(GSL_CPLUSPLUS_OPT -Zc:__cplusplus -permissive-) set(GSL_CPLUSPLUS_OPT -Zc:__cplusplus -permissive-)
endif() endif()
@ -149,7 +154,7 @@ function(add_gsl_test name)
target_link_libraries(${name} target_link_libraries(${name}
GSL GSL
gsl_tests_config gsl_tests_config
gtest_main ${GTestMain_LIBRARIES}
) )
add_test( add_test(
${name} ${name}
@ -254,7 +259,7 @@ function(add_gsl_test_noexcept name)
target_link_libraries(${name} target_link_libraries(${name}
GSL GSL
gsl_tests_config_noexcept gsl_tests_config_noexcept
gtest_main ${GTestMain_LIBRARIES}
) )
add_test( add_test(
${name} ${name}