@@ -27,14 +27,6 @@ bool is_isbn10(const std::string &code) {
2727 return check_digit (code) == code[9 ];
2828}
2929
30- template <typename T> bool is_isbn10 (const T &code) {
31- return false ;
32- }
33-
34- template <typename ...Ts> bool is_isbn10 (const std::variant<Ts...> &code) {
35- return std::visit (is_isbn10, code);
36- }
37-
3830bool is_isbn13 (const std::string &code) {
3931 // Helper function for computing ISBN-13 check digit
4032 auto check_digit = [](const std::string &code) -> char {
@@ -58,12 +50,24 @@ bool is_isbn13(const std::string &code) {
5850 return check_digit (code) == code[12 ];
5951}
6052
61- template <typename T> bool is_isbn13 (const T &code) {
53+ template <typename T>
54+ bool is_isbn10 (const T &code) {
55+ return false ;
56+ }
57+
58+ template <typename ...Ts>
59+ bool is_isbn10 (const std::variant<Ts...> &code) {
60+ return std::visit ([](const auto & value) { return is_isbn10 (value); }, code);
61+ }
62+
63+ template <typename T>
64+ bool is_isbn13 (const T &code) {
6265 return false ;
6366}
6467
65- template <typename ...Ts> bool is_isbn13 (const std::variant<Ts...> &code) {
66- return std::visit (is_isbn10, code);
68+ template <typename ...Ts>
69+ bool is_isbn13 (const std::variant<Ts...> &code) {
70+ return std::visit ([](const auto & value) { return is_isbn13 (value); }, code);
6771}
6872
6973template <typename T>
@@ -76,15 +80,16 @@ bool _is_isbn(const std::string &code) {
7680 return is_isbn (code, isbn13);
7781}
7882
79- template <typename T> bool _is_isbn (const T &code) {
83+ template <typename T>
84+ bool _is_isbn (const T &code) {
8085 return false ;
8186}
8287
83- template <typename ...Ts> bool _is_isbn (const std::variant<Ts...> &code) {
88+ template <typename ...Ts>
89+ bool _is_isbn (const std::variant<Ts...> &code) {
8490 return std::visit ([](const auto & value) { return _is_isbn (value); }, code);
8591}
8692
87-
8893template <typename T>
8994std::vector<bool > are_isbn (const std::vector<T> &codes) {
9095 std::vector<bool > checks;
0 commit comments