1
0
mirror of https://github.com/CLIUtils/CLI11.git synced 2025-05-07 23:33:52 +00:00

Fix compiler warnings with -Wsign-conversion

This commit is contained in:
Henry Schreiner 2019-12-31 09:45:11 -05:00 committed by Henry Schreiner
parent 9ef88ee93d
commit ed7e0dcdeb
2 changed files with 14 additions and 13 deletions

View File

@ -62,7 +62,7 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
target_compile_options(CLI11_warnings INTERFACE "/WX")
endif()
else()
target_compile_options(CLI11_warnings INTERFACE -Wall -Wextra -pedantic -Wshadow)
target_compile_options(CLI11_warnings INTERFACE -Wall -Wextra -pedantic -Wshadow -Wsign-conversion)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9)
# GCC 4.8 has a false positive

View File

@ -475,8 +475,9 @@ class Option : public OptionBase<Option> {
/// Get a Validator by index NOTE: this may not be the order of definition
Validator *get_validator(int index) {
// This is an signed int so that it is not equivalent to a pointer.
if(index >= 0 && index < static_cast<int>(validators_.size())) {
return &(validators_[index]);
return &(validators_[static_cast<decltype(validators_)::size_type>(index)]);
}
throw OptionNotFound("Validator index is not valid");
}
@ -1142,19 +1143,19 @@ class Option : public OptionBase<Option> {
switch(multi_option_policy_) {
case MultiOptionPolicy::TakeAll:
break;
case MultiOptionPolicy::TakeLast:
case MultiOptionPolicy::TakeLast: {
// Allow multi-option sizes (including 0)
{
size_t trim_size = std::min<size_t>(std::max<size_t>(get_items_expected_max(), 1), original.size());
if(original.size() != trim_size) {
res.assign(original.end() - trim_size, original.end());
}
}
break;
case MultiOptionPolicy::TakeFirst: {
size_t trim_size = std::min<size_t>(std::max<size_t>(get_items_expected_max(), 1), original.size());
size_t trim_size =
std::min<size_t>(static_cast<size_t>(std::max<int>(get_items_expected_max(), 1)), original.size());
if(original.size() != trim_size) {
res.assign(original.begin(), original.begin() + trim_size);
res.assign(original.end() - static_cast<results_t::difference_type>(trim_size), original.end());
}
} break;
case MultiOptionPolicy::TakeFirst: {
size_t trim_size =
std::min<size_t>(static_cast<size_t>(std::max<int>(get_items_expected_max(), 1)), original.size());
if(original.size() != trim_size) {
res.assign(original.begin(), original.begin() + static_cast<results_t::difference_type>(trim_size));
}
} break;
case MultiOptionPolicy::Join: