Commit fd5cdfd5476a63f2cd5f764b50c315f040be5efe

Authored by Daniel Gomez Antonio
Committed by GitHub
1 parent 584e0c3d

Fix compiler warning C4702 for MSVC-14 (#225)

* Fix compiler warning C4702  for MSVC-14
Showing 1 changed file with 6 additions and 9 deletions
include/cxxopts.hpp
@@ -564,21 +564,20 @@ namespace cxxopts @@ -564,21 +564,20 @@ namespace cxxopts
564 } // namespace detail 564 } // namespace detail
565 565
566 template <typename R, typename T> 566 template <typename R, typename T>
567 - R  
568 - checked_negate(T&& t, const std::string&, std::true_type) 567 + void
  568 + checked_negate(R& r, T&& t, const std::string&, std::true_type)
569 { 569 {
570 // if we got to here, then `t` is a positive number that fits into 570 // if we got to here, then `t` is a positive number that fits into
571 // `R`. So to avoid MSVC C4146, we first cast it to `R`. 571 // `R`. So to avoid MSVC C4146, we first cast it to `R`.
572 // See https://github.com/jarro2783/cxxopts/issues/62 for more details. 572 // See https://github.com/jarro2783/cxxopts/issues/62 for more details.
573 - return static_cast<R>(-static_cast<R>(t-1)-1); 573 + r = static_cast<R>(-static_cast<R>(t-1)-1);
574 } 574 }
575 575
576 template <typename R, typename T> 576 template <typename R, typename T>
577 - T  
578 - checked_negate(T&& t, const std::string& text, std::false_type) 577 + void
  578 + checked_negate(R&, T&&, const std::string& text, std::false_type)
579 { 579 {
580 throw_or_mimic<argument_incorrect_type>(text); 580 throw_or_mimic<argument_incorrect_type>(text);
581 - return t;  
582 } 581 }
583 582
584 template <typename T> 583 template <typename T>
@@ -643,9 +642,7 @@ namespace cxxopts @@ -643,9 +642,7 @@ namespace cxxopts
643 642
644 if (negative) 643 if (negative)
645 { 644 {
646 - value = checked_negate<T>(result,  
647 - text,  
648 - std::integral_constant<bool, is_signed>()); 645 + checked_negate<T>(value, result, text, std::integral_constant<bool, is_signed>());
649 } 646 }
650 else 647 else
651 { 648 {