[poppler] cpp/poppler-destination.h cpp/poppler-document.h cpp/poppler-embedded-file.h cpp/poppler-embedded-file-private.h cpp/poppler-font.h cpp/poppler-font-private.h cpp/poppler-global.cpp cpp/poppler-global.h cpp/poppler-image.cpp cpp/poppler-page.h cpp/poppler-page-transition.cpp cpp/poppler-page-transition.h fofi/FoFiIdentifier.cc .gitlab-ci.yml goo/gdir.h goo/gfile.h goo/JpegWriter.h goo/NetPBMWriter.h goo/PNGWriter.h goo/TiffWriter.h poppler/Annot.h poppler/Array.h poppler/CairoFontEngine.cc poppler/CairoFontEngine.h poppler/Catalog.h poppler/CharCodeToUnicode.h poppler/Dict.h poppler/FileSpec.h poppler/FlateEncoder.h poppler/FontInfo.h poppler/Function.h poppler/Gfx.cc poppler/GfxState.cc poppler/GfxState.h poppler/GlobalParams.h poppler/Hints.cc poppler/JArithmeticDecoder.h poppler/JBIG2Stream.cc poppler/JPEG2000Stream.h poppler/JSInfo.h poppler/Linearization.h poppler/Link.h poppler/MarkedContentOutputDev.h poppler/Movie.h poppler/OptionalContent.h poppler/PageTransition.h poppler/PDFDocFactory.h poppler/PDFDoc.h poppler/PopplerCache.h poppler/PreScanOutputDev.h poppler/Rendition.h poppler/SecurityHandler.h poppler/Sound.h poppler/SplashOutputDev.cc poppler/Stream.cc poppler/Stream.h poppler/StructElement.h poppler/TextOutputDev.cc poppler/TextOutputDev.h poppler/UnicodeMap.h poppler/ViewerPreferences.h poppler/XRef.h qt5/demos qt5/src qt5/tests qt6/demos qt6/src qt6/tests splash/SplashClip.h splash/SplashPath.h splash/SplashPattern.h splash/SplashScreen.h splash/SplashState.h utils/HtmlOutputDev.h

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Aug 27 14:20:09 UTC 2021


 .gitlab-ci.yml                               |    2 
 cpp/poppler-destination.h                    |    4 -
 cpp/poppler-document.h                       |    4 -
 cpp/poppler-embedded-file-private.h          |    4 -
 cpp/poppler-embedded-file.h                  |    3 -
 cpp/poppler-font-private.h                   |    3 -
 cpp/poppler-font.h                           |    3 -
 cpp/poppler-global.cpp                       |   12 ++---
 cpp/poppler-global.h                         |    5 +-
 cpp/poppler-image.cpp                        |    4 -
 cpp/poppler-page-transition.cpp              |    4 -
 cpp/poppler-page-transition.h                |    3 -
 cpp/poppler-page.h                           |    4 -
 fofi/FoFiIdentifier.cc                       |    4 -
 goo/JpegWriter.h                             |    4 -
 goo/NetPBMWriter.h                           |    4 -
 goo/PNGWriter.h                              |    4 -
 goo/TiffWriter.h                             |    4 -
 goo/gdir.h                                   |    4 -
 goo/gfile.h                                  |    4 -
 poppler/Annot.h                              |   38 ++++++++---------
 poppler/Array.h                              |    4 -
 poppler/CairoFontEngine.cc                   |   14 ++++--
 poppler/CairoFontEngine.h                    |    4 -
 poppler/Catalog.h                            |    2 
 poppler/CharCodeToUnicode.h                  |    4 -
 poppler/Dict.h                               |    6 +-
 poppler/FileSpec.h                           |    6 +-
 poppler/FlateEncoder.h                       |    2 
 poppler/FontInfo.h                           |    4 -
 poppler/Function.h                           |   12 ++---
 poppler/Gfx.cc                               |    2 
 poppler/GfxState.cc                          |    2 
 poppler/GfxState.h                           |   24 +++++-----
 poppler/GlobalParams.h                       |    6 +-
 poppler/Hints.cc                             |    4 -
 poppler/JArithmeticDecoder.h                 |    4 -
 poppler/JBIG2Stream.cc                       |    4 -
 poppler/JPEG2000Stream.h                     |    2 
 poppler/JSInfo.h                             |    4 -
 poppler/Linearization.h                      |    4 -
 poppler/Link.h                               |   30 ++++++-------
 poppler/MarkedContentOutputDev.h             |    4 -
 poppler/Movie.h                              |    4 -
 poppler/OptionalContent.h                    |    6 +-
 poppler/PDFDoc.h                             |    4 -
 poppler/PDFDocFactory.h                      |    4 -
 poppler/PageTransition.h                     |    4 -
 poppler/PopplerCache.h                       |    4 -
 poppler/PreScanOutputDev.h                   |    2 
 poppler/Rendition.h                          |    4 -
 poppler/SecurityHandler.h                    |    4 -
 poppler/Sound.h                              |    4 -
 poppler/SplashOutputDev.cc                   |    2 
 poppler/Stream.cc                            |    2 
 poppler/Stream.h                             |   24 +++++-----
 poppler/StructElement.h                      |    6 +-
 poppler/TextOutputDev.cc                     |    4 -
 poppler/TextOutputDev.h                      |    8 +--
 poppler/UnicodeMap.h                         |    4 -
 poppler/ViewerPreferences.h                  |    3 -
 poppler/XRef.h                               |    6 +-
 qt5/demos/abstractinfodock.h                 |    3 -
 qt5/demos/embeddedfiles.h                    |    3 -
 qt5/demos/fonts.h                            |    3 -
 qt5/demos/info.h                             |    3 -
 qt5/demos/metadata.h                         |    3 -
 qt5/demos/navigationtoolbar.h                |    4 -
 qt5/demos/optcontent.h                       |    3 -
 qt5/demos/pageview.h                         |    3 -
 qt5/demos/permissions.h                      |    3 -
 qt5/demos/thumbnails.h                       |    3 -
 qt5/demos/toc.h                              |    4 -
 qt5/demos/viewer.h                           |    3 -
 qt5/src/QPainterOutputDev.h                  |    4 -
 qt5/src/poppler-annotation.h                 |   60 +++++++++++++--------------
 qt5/src/poppler-embeddedfile-private.h       |    4 -
 qt5/src/poppler-form.cc                      |    4 -
 qt5/src/poppler-form.h                       |   10 ++--
 qt5/src/poppler-link-extractor-private.h     |    3 -
 qt5/src/poppler-link-private.h               |    4 -
 qt5/src/poppler-link.cc                      |   14 +++---
 qt5/src/poppler-link.h                       |   14 +++---
 qt5/src/poppler-media.cc                     |    4 -
 qt5/src/poppler-media.h                      |    4 -
 qt5/src/poppler-optcontent-private.h         |    6 +-
 qt5/src/poppler-optcontent.h                 |    4 -
 qt5/src/poppler-page-transition.cc           |    4 -
 qt5/src/poppler-page-transition.h            |    4 -
 qt5/src/poppler-private.h                    |    4 -
 qt5/src/poppler-qiodeviceoutstream-private.h |    3 -
 qt5/src/poppler-qt5.h                        |   20 ++++-----
 qt5/tests/check_actualtext.cpp               |    2 
 qt5/tests/check_annotations.cpp              |    2 
 qt5/tests/check_attachments.cpp              |    2 
 qt5/tests/check_dateConversion.cpp           |    2 
 qt5/tests/check_fonts.cpp                    |    2 
 qt5/tests/check_forms.cpp                    |    4 -
 qt5/tests/check_goostring.cpp                |    2 
 qt5/tests/check_internal_outline.cpp         |    2 
 qt5/tests/check_lexer.cpp                    |    2 
 qt5/tests/check_links.cpp                    |    2 
 qt5/tests/check_metadata.cpp                 |    2 
 qt5/tests/check_object.cpp                   |    2 
 qt5/tests/check_optcontent.cpp               |    2 
 qt5/tests/check_outline.cpp                  |    2 
 qt5/tests/check_pagelabelinfo.cpp            |    2 
 qt5/tests/check_pagelayout.cpp               |    2 
 qt5/tests/check_pagemode.cpp                 |    2 
 qt5/tests/check_password.cpp                 |    2 
 qt5/tests/check_permissions.cpp              |    2 
 qt5/tests/check_search.cpp                   |    2 
 qt5/tests/check_strings.cpp                  |    2 
 qt5/tests/check_stroke_opacity.cpp           |    2 
 qt5/tests/check_utf_conversion.cpp           |    2 
 qt5/tests/stress-threads-qt5.cpp             |    2 
 qt5/tests/test-password-qt5.cpp              |    2 
 qt6/demos/abstractinfodock.h                 |    3 -
 qt6/demos/embeddedfiles.h                    |    3 -
 qt6/demos/fonts.h                            |    3 -
 qt6/demos/info.h                             |    3 -
 qt6/demos/metadata.h                         |    3 -
 qt6/demos/navigationtoolbar.h                |    4 -
 qt6/demos/optcontent.h                       |    3 -
 qt6/demos/pageview.h                         |    3 -
 qt6/demos/permissions.h                      |    3 -
 qt6/demos/thumbnails.h                       |    3 -
 qt6/demos/toc.h                              |    4 -
 qt6/demos/viewer.h                           |    3 -
 qt6/src/QPainterOutputDev.h                  |    4 -
 qt6/src/poppler-annotation.h                 |   36 ++++++++--------
 qt6/src/poppler-embeddedfile-private.h       |    4 -
 qt6/src/poppler-form.cc                      |    4 -
 qt6/src/poppler-form.h                       |   10 ++--
 qt6/src/poppler-link-extractor-private.h     |    3 -
 qt6/src/poppler-link-private.h               |    4 -
 qt6/src/poppler-link.cc                      |   12 ++---
 qt6/src/poppler-link.h                       |   14 +++---
 qt6/src/poppler-media.cc                     |    4 -
 qt6/src/poppler-media.h                      |    4 -
 qt6/src/poppler-optcontent-private.h         |    6 +-
 qt6/src/poppler-optcontent.h                 |    4 -
 qt6/src/poppler-page-transition.cc           |    4 -
 qt6/src/poppler-page-transition.h            |    4 -
 qt6/src/poppler-private.h                    |    4 -
 qt6/src/poppler-qiodeviceoutstream-private.h |    3 -
 qt6/src/poppler-qt6.h                        |   20 ++++-----
 qt6/tests/check_actualtext.cpp               |    2 
 qt6/tests/check_annotations.cpp              |    2 
 qt6/tests/check_attachments.cpp              |    2 
 qt6/tests/check_dateConversion.cpp           |    2 
 qt6/tests/check_fonts.cpp                    |    2 
 qt6/tests/check_forms.cpp                    |    4 -
 qt6/tests/check_goostring.cpp                |    2 
 qt6/tests/check_internal_outline.cpp         |    2 
 qt6/tests/check_lexer.cpp                    |    2 
 qt6/tests/check_links.cpp                    |    2 
 qt6/tests/check_metadata.cpp                 |    2 
 qt6/tests/check_object.cpp                   |    2 
 qt6/tests/check_optcontent.cpp               |    2 
 qt6/tests/check_outline.cpp                  |    2 
 qt6/tests/check_pagelabelinfo.cpp            |    2 
 qt6/tests/check_pagelayout.cpp               |    2 
 qt6/tests/check_pagemode.cpp                 |    2 
 qt6/tests/check_password.cpp                 |    2 
 qt6/tests/check_permissions.cpp              |    2 
 qt6/tests/check_search.cpp                   |    2 
 qt6/tests/check_strings.cpp                  |    2 
 qt6/tests/check_stroke_opacity.cpp           |    2 
 qt6/tests/check_utf_conversion.cpp           |    2 
 qt6/tests/stress-threads-qt6.cpp             |    2 
 qt6/tests/test-password-qt6.cpp              |    2 
 splash/SplashClip.h                          |    2 
 splash/SplashPath.h                          |    2 
 splash/SplashPattern.h                       |    2 
 splash/SplashScreen.h                        |    4 -
 splash/SplashState.h                         |    2 
 utils/HtmlOutputDev.h                        |    4 -
 178 files changed, 456 insertions(+), 422 deletions(-)

New commits:
commit 6aff5bbbfe06c70314ba7ea936d98aed0e48331f
Author: Albert Astals Cid <aacid at kde.org>
Date:   Sat Aug 21 21:46:00 2021 +0200

    CI: Enable google-explicit-constructor
    
    I was doing some refactoring before and was hit by one of the
    constructors being magically called when i didn't want that.
    
    Since we don't really on it (was just used in some of the explicit type
    conversions) I think it makes sense to enable
    
    And 2 small qt6 clang-tidy fixes because we don't have qt6 on
    the clang-tidy CI yet
    
    There's 2 potentially source incompatible changes in the qt frontend,
    but i really really hope noone was using the constructors that way

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9781e7b9..e9d9624b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -59,7 +59,7 @@ build_clang12_libcpp:
     - mkdir -p build && cd build
     - apt-get install --yes --no-install-recommends libclang-12-dev llvm-12-dev libc++-12-dev libc++abi-12-dev clang-tidy-12 clang-12 libunwind-12-dev
     - clang++-12 -fPIC -shared -o goostring-format-checker.so ../test/goostring-format-checker/goostring-format-checker.cc -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I /usr/lib/llvm-12/include/
-    - CC=clang-12 CXX=clang++-12 cmake -G Ninja -DCMAKE_CXX_FLAGS="-stdlib=libc++ -Xclang -load -Xclang $PWD/goostring-format-checker.so -Xclang -add-plugin -Xclang goostring-format-checker" -DTESTDATADIR=$PWD/../test-data -DCMAKE_CXX_CLANG_TIDY="clang-tidy-12;-header-filter=.;-checks=-*,performance-*,bugprone-*,readability-inconsistent-declaration-parameter-name,readability-string-compare,modernize-deprecated-headers,modernize-make-unique,modernize-make-shared,modernize-use-override,modernize-use-equals-delete,modernize-use-emplace,modernize-use-bool-literals,modernize-redundant-void-arg,modernize-loop-convert,-bugprone-narrowing-conversions,-bugprone-macro-parentheses,-bugprone-suspicious-string-compare,-bugprone-incorrect-roundings,-bugprone-undefined-memory-manipulation,-bugprone-sizeof-expression,-bugprone-branch-clone,-bugprone-reserved-identifier,-bugprone-suspicious-include,-performance-no-int-to-ptr;-warnings-as-errors=*" .. -DCMAKE_PREFIX_PATH=$PWD/../6.0.0/gcc_64/lib/cmak
 e
+    - CC=clang-12 CXX=clang++-12 cmake -G Ninja -DCMAKE_CXX_FLAGS="-stdlib=libc++ -Xclang -load -Xclang $PWD/goostring-format-checker.so -Xclang -add-plugin -Xclang goostring-format-checker" -DTESTDATADIR=$PWD/../test-data -DCMAKE_CXX_CLANG_TIDY="clang-tidy-12;-header-filter=.;-checks=-*,performance-*,bugprone-*,readability-inconsistent-declaration-parameter-name,readability-string-compare,modernize-deprecated-headers,modernize-make-unique,modernize-make-shared,modernize-use-override,modernize-use-equals-delete,modernize-use-emplace,modernize-use-bool-literals,modernize-redundant-void-arg,modernize-loop-convert,google-explicit-constructor,-bugprone-narrowing-conversions,-bugprone-macro-parentheses,-bugprone-suspicious-string-compare,-bugprone-incorrect-roundings,-bugprone-undefined-memory-manipulation,-bugprone-sizeof-expression,-bugprone-branch-clone,-bugprone-reserved-identifier,-bugprone-suspicious-include,-performance-no-int-to-ptr;-warnings-as-errors=*" .. -DCMAKE_PREFIX_PATH=$
 PWD/../6.0.0/gcc_64/lib/cmake
     - ninja
     - ctest --output-on-failure
 
diff --git a/cpp/poppler-destination.h b/cpp/poppler-destination.h
index 673bd1a4..4629195d 100644
--- a/cpp/poppler-destination.h
+++ b/cpp/poppler-destination.h
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2019, Masamichi Hosoda <trueroad at trueroad.jp>
- * Copyright (C) 2019, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2019, 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -58,7 +58,7 @@ public:
     destination &operator=(destination &&other) noexcept;
 
 private:
-    destination(destination_private *dd);
+    explicit destination(destination_private *dd);
 
     destination_private *d;
     friend class document;
diff --git a/cpp/poppler-document.h b/cpp/poppler-document.h
index c4a133da..ccf0a0f4 100644
--- a/cpp/poppler-document.h
+++ b/cpp/poppler-document.h
@@ -2,7 +2,7 @@
  * Copyright (C) 2009-2010, Pino Toscano <pino at kde.org>
  * Copyright (C) 2016 Jakub Alba <jakubalba at gmail.com>
  * Copyright (C) 2019, Masamichi Hosoda <trueroad at trueroad.jp>
- * Copyright (C) 2019, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2019, 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -124,7 +124,7 @@ public:
     static document *load_from_raw_data(const char *file_data, int file_data_length, const std::string &owner_password = std::string(), const std::string &user_password = std::string());
 
 private:
-    document(document_private &dd);
+    explicit document(document_private &dd);
 
     document_private *d;
     friend class document_private;
diff --git a/cpp/poppler-embedded-file-private.h b/cpp/poppler-embedded-file-private.h
index 55e7270a..0c11145e 100644
--- a/cpp/poppler-embedded-file-private.h
+++ b/cpp/poppler-embedded-file-private.h
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2009, 2011, Pino Toscano <pino at kde.org>
- * Copyright (C) 2018, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2018, 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -27,7 +27,7 @@ namespace poppler {
 class embedded_file_private
 {
 public:
-    embedded_file_private(FileSpec *fs);
+    explicit embedded_file_private(FileSpec *fs);
     ~embedded_file_private();
 
     embedded_file_private(const embedded_file_private &) = delete;
diff --git a/cpp/poppler-embedded-file.h b/cpp/poppler-embedded-file.h
index fe45ab52..d108afb1 100644
--- a/cpp/poppler-embedded-file.h
+++ b/cpp/poppler-embedded-file.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2009-2010, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -43,7 +44,7 @@ public:
     byte_array data() const;
 
 private:
-    embedded_file(embedded_file_private &dd);
+    explicit embedded_file(embedded_file_private &dd);
 
     embedded_file_private *d;
     friend class embedded_file_private;
diff --git a/cpp/poppler-font-private.h b/cpp/poppler-font-private.h
index cc8e7004..ba9c6e0d 100644
--- a/cpp/poppler-font-private.h
+++ b/cpp/poppler-font-private.h
@@ -2,6 +2,7 @@
  * Copyright (C) 2009, Pino Toscano <pino at kde.org>
  * Copyright (C) 2015, Tamas Szekeres <szekerest at gmail.com>
  * Copyright (C) 2020, Suzuki Toshiya <mpsuzuki at hiroshima-u.ac.jp>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -32,7 +33,7 @@ class poppler::font_info_private
 {
 public:
     font_info_private() : type(font_info::unknown), is_embedded(false), is_subset(false) { }
-    font_info_private(FontInfo *fi) : type((font_info::type_enum)fi->getType()), is_embedded(fi->getEmbedded()), is_subset(fi->getSubset())
+    explicit font_info_private(FontInfo *fi) : type((font_info::type_enum)fi->getType()), is_embedded(fi->getEmbedded()), is_subset(fi->getSubset())
     {
         if (fi->getName()) {
             font_name = fi->getName()->c_str();
diff --git a/cpp/poppler-font.h b/cpp/poppler-font.h
index d62858db..b6bc48c5 100644
--- a/cpp/poppler-font.h
+++ b/cpp/poppler-font.h
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) 2009, Pino Toscano <pino at kde.org>
  * Copyright (C) 2020, Suzuki Toshiya <mpsuzuki at hiroshima-u.ac.jp>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -64,7 +65,7 @@ public:
     font_info &operator=(const font_info &fi);
 
 private:
-    font_info(font_info_private &dd);
+    explicit font_info(font_info_private &dd);
 
     font_info_private *d;
     friend class font_iterator;
diff --git a/cpp/poppler-global.cpp b/cpp/poppler-global.cpp
index 52ecd636..caf8fee3 100644
--- a/cpp/poppler-global.cpp
+++ b/cpp/poppler-global.cpp
@@ -4,7 +4,7 @@
  * Copyright (C) 2014, 2015 Hans-Peter Deifel <hpdeifel at gmx.de>
  * Copyright (C) 2015, Tamas Szekeres <szekerest at gmail.com>
  * Copyright (C) 2016 Jakub Alba <jakubalba at gmail.com>
- * Copyright (C) 2018, 2020, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2018, 2020, 2021, Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2018 Suzuki Toshiya <mpsuzuki at hiroshima-u.ac.jp>
  * Copyright (C) 2018, 2020, Adam Reichold <adam.reichold at t-online.de>
  *
@@ -57,7 +57,7 @@ struct MiniIconv
     MiniIconv(const MiniIconv &) = delete;
     MiniIconv &operator=(const MiniIconv &) = delete;
     bool is_valid() const { return i_ != (iconv_t)-1; }
-    operator iconv_t() const { return i_; }
+    explicit operator iconv_t() const { return i_; }
     iconv_t i_;
 };
 
@@ -230,13 +230,13 @@ byte_array ustring::to_utf8() const
     char *str_data = &str[0];
     size_t me_len_char = size() * sizeof(value_type);
     size_t str_len_left = str.size();
-    size_t ir = iconv(ic, (ICONV_CONST char **)&me_data, &me_len_char, &str_data, &str_len_left);
+    size_t ir = iconv(static_cast<iconv_t>(ic), (ICONV_CONST char **)&me_data, &me_len_char, &str_data, &str_len_left);
     if ((ir == (size_t)-1) && (errno == E2BIG)) {
         const size_t delta = str_data - &str[0];
         str_len_left += str.size();
         str.resize(str.size() * 2);
         str_data = &str[delta];
-        ir = iconv(ic, (ICONV_CONST char **)&me_data, &me_len_char, &str_data, &str_len_left);
+        ir = iconv(static_cast<iconv_t>(ic), (ICONV_CONST char **)&me_data, &me_len_char, &str_data, &str_len_left);
         if (ir == (size_t)-1) {
             return byte_array();
         }
@@ -284,13 +284,13 @@ ustring ustring::from_utf8(const char *str, int len)
     char *str_data = const_cast<char *>(str);
     size_t str_len_char = len;
     size_t ret_len_left = ret.size() * sizeof(ustring::value_type);
-    size_t ir = iconv(ic, (ICONV_CONST char **)&str_data, &str_len_char, &ret_data, &ret_len_left);
+    size_t ir = iconv(static_cast<iconv_t>(ic), (ICONV_CONST char **)&str_data, &str_len_char, &ret_data, &ret_len_left);
     if ((ir == (size_t)-1) && (errno == E2BIG)) {
         const size_t delta = ret_data - reinterpret_cast<char *>(&ret[0]);
         ret_len_left += ret.size() * sizeof(ustring::value_type);
         ret.resize(ret.size() * 2);
         ret_data = reinterpret_cast<char *>(&ret[0]) + delta;
-        ir = iconv(ic, (ICONV_CONST char **)&str_data, &str_len_char, &ret_data, &ret_len_left);
+        ir = iconv(static_cast<iconv_t>(ic), (ICONV_CONST char **)&str_data, &str_len_char, &ret_data, &ret_len_left);
         if (ir == (size_t)-1) {
             return ustring();
         }
diff --git a/cpp/poppler-global.h b/cpp/poppler-global.h
index bdc12beb..49fc7104 100644
--- a/cpp/poppler-global.h
+++ b/cpp/poppler-global.h
@@ -3,6 +3,7 @@
  * Copyright (C) 2010, Patrick Spendrin <ps_ml at gmx.de>
  * Copyright (C) 2014, Hans-Peter Deifel <hpdeifel at gmx.de>
  * Copyright (C) 2018, Adam Reichold <adam.reichold at t-online.de>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -108,8 +109,8 @@ public:
 
 private:
     // forbid implicit std::string conversions
-    ustring(const std::string &);
-    operator std::string() const;
+    explicit ustring(const std::string &);
+    explicit operator std::string() const;
     ustring &operator=(const std::string &);
 };
 #ifdef _MSC_VER
diff --git a/cpp/poppler-image.cpp b/cpp/poppler-image.cpp
index eb3e91ec..b717da68 100644
--- a/cpp/poppler-image.cpp
+++ b/cpp/poppler-image.cpp
@@ -1,7 +1,7 @@
 /*
  * Copyright (C) 2010-2011, Pino Toscano <pino at kde.org>
  * Copyright (C) 2013 Adrian Johnson <ajohnson at redneon.com>
- * Copyright (C) 2017-2019, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2017-2019, 2021, Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2017, Jeroen Ooms <jeroenooms at gmail.com>
  * Copyright (C) 2018, Zsombor Hollay-Horvath <hollay.horvath at gmail.com>
  * Copyright (C) 2018, Adam Reichold <adam.reichold at t-online.de>
@@ -51,7 +51,7 @@ namespace {
 
 struct FileCloser
 {
-    inline FileCloser(FILE *ff) : f(ff) { }
+    inline explicit FileCloser(FILE *ff) : f(ff) { }
     inline ~FileCloser() { (void)close(); }
     FileCloser(const FileCloser &) = delete;
     FileCloser &operator=(const FileCloser &) = delete;
diff --git a/cpp/poppler-page-transition.cpp b/cpp/poppler-page-transition.cpp
index 7f17c4fc..211ed051 100644
--- a/cpp/poppler-page-transition.cpp
+++ b/cpp/poppler-page-transition.cpp
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2009-2010, Pino Toscano <pino at kde.org>
- * Copyright (C) 2011, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2011, 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -29,7 +29,7 @@ using namespace poppler;
 class poppler::page_transition_private
 {
 public:
-    page_transition_private(Object *trans) : pt(trans) { }
+    explicit page_transition_private(Object *trans) : pt(trans) { }
 
     PageTransition pt;
 };
diff --git a/cpp/poppler-page-transition.h b/cpp/poppler-page-transition.h
index 5406a111..d4d6ddf5 100644
--- a/cpp/poppler-page-transition.h
+++ b/cpp/poppler-page-transition.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2009, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -73,7 +74,7 @@ public:
     page_transition &operator=(const page_transition &pt);
 
 private:
-    page_transition(Object *params);
+    explicit page_transition(Object *params);
 
     page_transition_private *d;
     friend class page;
diff --git a/cpp/poppler-page.h b/cpp/poppler-page.h
index aaeb19a5..a3626abc 100644
--- a/cpp/poppler-page.h
+++ b/cpp/poppler-page.h
@@ -1,7 +1,7 @@
 /*
  * Copyright (C) 2009-2010, Pino Toscano <pino at kde.org>
  * Copyright (C) 2018, 2020, Suzuki Toshiya <mpsuzuki at hiroshima-u.ac.jp>
- * Copyright (C) 2018-2020, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2018-2021, Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2018, Zsombor Hollay-Horvath <hollay.horvath at gmail.com>
  * Copyright (C) 2018, Aleksey Nikolaev <nae202 at gmail.com>
  * Copyright (C) 2020, Jiri Jakes <freedesktop at jirijakes.eu>
@@ -129,7 +129,7 @@ public:
     std::string get_font_name(int i = 0) const;
 
 private:
-    text_box(text_box_data *data);
+    explicit text_box(text_box_data *data);
 
     std::unique_ptr<text_box_data> m_data;
 };
diff --git a/fofi/FoFiIdentifier.cc b/fofi/FoFiIdentifier.cc
index b39d71ee..ec92b33d 100644
--- a/fofi/FoFiIdentifier.cc
+++ b/fofi/FoFiIdentifier.cc
@@ -14,7 +14,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2013 Christoph Duelli <duelli at melosgmbh.de>
-// Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2018, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2019 Christian Persch <chpe at src.gnome.org>
 // Copyright (C) 2019 LE GARREC Vincent <legarrec.vincent at gmail.com>
 //
@@ -175,7 +175,7 @@ public:
     bool cmp(int pos, const char *s) override;
 
 private:
-    FileReader(FILE *fA);
+    explicit FileReader(FILE *fA);
     bool fillBuf(int pos, int len);
 
     FILE *f;
diff --git a/goo/JpegWriter.h b/goo/JpegWriter.h
index 8cdbc70e..a495859d 100644
--- a/goo/JpegWriter.h
+++ b/goo/JpegWriter.h
@@ -9,7 +9,7 @@
 // Copyright (C) 2010 Jürg Billeter <j at bitron.ch>
 // Copyright (C) 2010 Harry Roberts <harry.roberts at midnight-labs.org>
 // Copyright (C) 2010 Brian Cameron <brian.cameron at oracle.com>
-// Copyright (C) 2011 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2011, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2011 Thomas Freitag <Thomas.Freitag at alfa.de>
 // Copyright (C) 2018 Martin Packman <gzlist at googlemail.com>
 //
@@ -43,7 +43,7 @@ public:
     };
 
     JpegWriter(int quality, bool progressive, Format format = RGB);
-    JpegWriter(Format format = RGB);
+    explicit JpegWriter(Format format = RGB);
     ~JpegWriter() override;
 
     JpegWriter(const JpegWriter &other) = delete;
diff --git a/goo/NetPBMWriter.h b/goo/NetPBMWriter.h
index c3e5faa8..8a0fe318 100644
--- a/goo/NetPBMWriter.h
+++ b/goo/NetPBMWriter.h
@@ -5,7 +5,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright (C) 2009 Stefan Thomas <thomas at eload24.com>
-// Copyright (C) 2009, 2011 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2009, 2011, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2010, 2013 Adrian Johnson <ajohnson at redneon.com>
 // Copyright (C) 2010 Brian Cameron <brian.cameron at oracle.com>
 // Copyright (C) 2011 Thomas Freitag <Thomas.Freitag at alfa.de>
@@ -37,7 +37,7 @@ public:
         MONOCHROME
     };
 
-    NetPBMWriter(Format formatA = RGB);
+    explicit NetPBMWriter(Format formatA = RGB);
     ~NetPBMWriter() override {};
 
     bool init(FILE *f, int width, int height, int hDPI, int vDPI) override;
diff --git a/goo/PNGWriter.h b/goo/PNGWriter.h
index f2f94c17..a241d2e2 100644
--- a/goo/PNGWriter.h
+++ b/goo/PNGWriter.h
@@ -6,7 +6,7 @@
 //
 // Copyright (C) 2009 Warren Toomey <wkt at tuhs.org>
 // Copyright (C) 2009 Shen Liang <shenzhuxi at gmail.com>
-// Copyright (C) 2009, 2011-2013 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2009, 2011-2013, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2009 Stefan Thomas <thomas at eload24.com>
 // Copyright (C) 2010, 2011, 2013, 2017 Adrian Johnson <ajohnson at redneon.com>
 // Copyright (C) 2012 Pino Toscano <pino at kde.org>
@@ -43,7 +43,7 @@ public:
         RGB48
     };
 
-    PNGWriter(Format format = RGB);
+    explicit PNGWriter(Format format = RGB);
     ~PNGWriter() override;
 
     PNGWriter(const PNGWriter &other) = delete;
diff --git a/goo/TiffWriter.h b/goo/TiffWriter.h
index d0358efc..b91220bf 100644
--- a/goo/TiffWriter.h
+++ b/goo/TiffWriter.h
@@ -5,7 +5,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright (C) 2010, 2012 William Bader <williambader at hotmail.com>
-// Copyright (C) 2011, 2012 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2011, 2012, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2012, 2017 Adrian Johnson <ajohnson at redneon.com>
 // Copyright (C) 2012 Pino Toscano <pino at kde.org>
 //
@@ -44,7 +44,7 @@ public:
         RGB48
     };
 
-    TiffWriter(Format format = RGB);
+    explicit TiffWriter(Format format = RGB);
     ~TiffWriter() override;
 
     TiffWriter(const TiffWriter &other) = delete;
diff --git a/goo/gdir.h b/goo/gdir.h
index a042a3fc..afea0606 100644
--- a/goo/gdir.h
+++ b/goo/gdir.h
@@ -16,7 +16,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2006 Kristian Høgsberg <krh at redhat.com>
-// Copyright (C) 2009, 2011, 2012, 2017, 2018 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2009, 2011, 2012, 2017, 2018, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2009 Kovid Goyal <kovid at kovidgoyal.net>
 // Copyright (C) 2013 Adam Reichold <adamreichold at myopera.com>
 // Copyright (C) 2013, 2017 Adrian Johnson <ajohnson at redneon.com>
@@ -65,7 +65,7 @@ private:
 class GDir
 {
 public:
-    GDir(const char *name, bool doStatA = true);
+    explicit GDir(const char *name, bool doStatA = true);
     ~GDir();
 
     GDir(const GDir &other) = delete;
diff --git a/goo/gfile.h b/goo/gfile.h
index 97cd517f..637bcdc1 100644
--- a/goo/gfile.h
+++ b/goo/gfile.h
@@ -16,7 +16,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2006 Kristian Høgsberg <krh at redhat.com>
-// Copyright (C) 2009, 2011, 2012, 2017, 2018 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2009, 2011, 2012, 2017, 2018, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2009 Kovid Goyal <kovid at kovidgoyal.net>
 // Copyright (C) 2013 Adam Reichold <adamreichold at myopera.com>
 // Copyright (C) 2013, 2017 Adrian Johnson <ajohnson at redneon.com>
@@ -141,7 +141,7 @@ private:
     bool modificationTimeChangedSinceOpen() const;
 
 private:
-    GooFile(int fdA);
+    explicit GooFile(int fdA);
     int fd;
     struct timespec modifiedTimeOnOpen;
 #endif // _WIN32
diff --git a/poppler/Annot.h b/poppler/Annot.h
index 0ab8c535..daaf7b10 100644
--- a/poppler/Annot.h
+++ b/poppler/Annot.h
@@ -121,8 +121,8 @@ class POPPLER_PRIVATE_EXPORT AnnotPath
 {
 public:
     AnnotPath();
-    AnnotPath(Array *array);
-    AnnotPath(std::vector<AnnotCoord> &&coords);
+    explicit AnnotPath(Array *array);
+    explicit AnnotPath(std::vector<AnnotCoord> &&coords);
     ~AnnotPath();
 
     AnnotPath(const AnnotPath &) = delete;
@@ -191,7 +191,7 @@ public:
         borderEffectCloudy // C
     };
 
-    AnnotBorderEffect(Dict *dict);
+    explicit AnnotBorderEffect(Dict *dict);
 
     AnnotBorderEffectType getEffectType() const { return effectType; }
     double getIntensity() const { return intensity; }
@@ -297,7 +297,7 @@ class POPPLER_PRIVATE_EXPORT AnnotBorderArray : public AnnotBorder
 {
 public:
     AnnotBorderArray();
-    AnnotBorderArray(Array *array);
+    explicit AnnotBorderArray(Array *array);
 
     void setHorizontalCorner(double hc) { horizontalCorner = hc; }
     void setVerticalCorner(double vc) { verticalCorner = vc; }
@@ -322,7 +322,7 @@ class AnnotBorderBS : public AnnotBorder
 {
 public:
     AnnotBorderBS();
-    AnnotBorderBS(Dict *dict);
+    explicit AnnotBorderBS(Dict *dict);
 
 private:
     AnnotBorderType getType() const override { return typeBS; }
@@ -351,10 +351,10 @@ public:
     };
 
     AnnotColor();
-    AnnotColor(double gray);
+    explicit AnnotColor(double gray);
     AnnotColor(double r, double g, double b);
     AnnotColor(double c, double m, double y, double k);
-    AnnotColor(Array *array, int adjust = 0);
+    explicit AnnotColor(Array *array, int adjust = 0);
 
     void adjustColor(int adjust);
 
@@ -376,7 +376,7 @@ class POPPLER_PRIVATE_EXPORT DefaultAppearance
 {
 public:
     DefaultAppearance(Object &&fontNameA, double fontPtSizeA, std::unique_ptr<AnnotColor> fontColorA);
-    DefaultAppearance(const GooString *da);
+    explicit DefaultAppearance(const GooString *da);
     void setFontName(Object &&fontNameA);
     const Object &getFontName() const { return fontName; }
     void setFontPtSize(double fontPtSizeA);
@@ -415,7 +415,7 @@ public:
         scaleProportional // P
     };
 
-    AnnotIconFit(Dict *dict);
+    explicit AnnotIconFit(Dict *dict);
 
     AnnotIconFitScaleWhen getScaleWhen() { return scaleWhen; }
     AnnotIconFitScale getScale() { return scale; }
@@ -490,7 +490,7 @@ public:
         captionOverlaid // 6
     };
 
-    AnnotAppearanceCharacs(Dict *dict);
+    explicit AnnotAppearanceCharacs(Dict *dict);
     ~AnnotAppearanceCharacs();
 
     AnnotAppearanceCharacs(const AnnotAppearanceCharacs &) = delete;
@@ -528,7 +528,7 @@ protected:
 class AnnotAppearanceBBox
 {
 public:
-    AnnotAppearanceBBox(PDFRectangle *rect);
+    explicit AnnotAppearanceBBox(PDFRectangle *rect);
 
     void setBorderWidth(double w) { borderWidth = w; }
 
@@ -1497,7 +1497,7 @@ class Annot3D : public Annot
             dStateLive // L
         };
 
-        Activation(Dict *dict);
+        explicit Activation(Dict *dict);
 
     private:
         ActivationATrigger aTrigger; // A   (Default XA)
@@ -1531,7 +1531,7 @@ public:
     class POPPLER_PRIVATE_EXPORT Params
     {
     public:
-        Params(Dict *dict);
+        explicit Params(Dict *dict);
         ~Params();
 
         Params(const Params &) = delete;
@@ -1555,7 +1555,7 @@ public:
             typeVideo // Video
         };
 
-        Instance(Dict *dict);
+        explicit Instance(Dict *dict);
         ~Instance();
 
         Instance(const Instance &) = delete;
@@ -1581,7 +1581,7 @@ public:
             typeVideo // Video
         };
 
-        Configuration(Dict *dict);
+        explicit Configuration(Dict *dict);
         ~Configuration();
 
         Configuration(const Configuration &) = delete;
@@ -1624,7 +1624,7 @@ public:
     class POPPLER_PRIVATE_EXPORT Content
     {
     public:
-        Content(Dict *dict);
+        explicit Content(Dict *dict);
         ~Content();
 
         Content(const Content &) = delete;
@@ -1655,7 +1655,7 @@ public:
             conditionUserAction // XA
         };
 
-        Activation(Dict *dict);
+        explicit Activation(Dict *dict);
 
         Condition getCondition() const;
 
@@ -1674,7 +1674,7 @@ public:
             conditionUserAction // XD
         };
 
-        Deactivation(Dict *dict);
+        explicit Deactivation(Dict *dict);
 
         Condition getCondition() const;
 
@@ -1686,7 +1686,7 @@ public:
     class POPPLER_PRIVATE_EXPORT Settings
     {
     public:
-        Settings(Dict *dict);
+        explicit Settings(Dict *dict);
         ~Settings();
 
         Settings(const Settings &) = delete;
diff --git a/poppler/Array.h b/poppler/Array.h
index 782ef725..638a1f94 100644
--- a/poppler/Array.h
+++ b/poppler/Array.h
@@ -16,7 +16,7 @@
 // Copyright (C) 2005 Kristian Høgsberg <krh at redhat.com>
 // Copyright (C) 2012 Fabio D'Urso <fabiodurso at hotmail.it>
 // Copyright (C) 2013 Thomas Freitag <Thomas.Freitag at alfa.de>
-// Copyright (C) 2017-2019 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2017-2019, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2017 Adrian Johnson <ajohnson at redneon.com>
 // Copyright (C) 2018, 2019 Adam Reichold <adam.reichold at t-online.de>
 //
@@ -46,7 +46,7 @@ class POPPLER_PRIVATE_EXPORT Array
 {
 public:
     // Constructor.
-    Array(XRef *xrefA);
+    explicit Array(XRef *xrefA);
 
     // Destructor.
     ~Array();
diff --git a/poppler/CairoFontEngine.cc b/poppler/CairoFontEngine.cc
index a65b5fc8..7e118b1d 100755
--- a/poppler/CairoFontEngine.cc
+++ b/poppler/CairoFontEngine.cc
@@ -17,7 +17,7 @@
 // Copyright (C) 2005-2007 Jeff Muizelaar <jeff at infidigm.net>
 // Copyright (C) 2005, 2006 Kristian Høgsberg <krh at redhat.com>
 // Copyright (C) 2005 Martin Kretzschmar <martink at gnome.org>
-// Copyright (C) 2005, 2009, 2012, 2013, 2015, 2017-2019 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2009, 2012, 2013, 2015, 2017-2019, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2006, 2007, 2010, 2011 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2007 Koji Otani <sho at bbr.jp>
 // Copyright (C) 2008, 2009 Chris Wilson <chris at chris-wilson.co.uk>
@@ -197,10 +197,10 @@ class _FtFaceDataProxy
     _ft_face_data *_data;
 
 public:
-    _FtFaceDataProxy(_ft_face_data *data) : _data(data) { cairo_font_face_reference(_data->font_face); }
+    explicit _FtFaceDataProxy(_ft_face_data *data) : _data(data) { cairo_font_face_reference(_data->font_face); }
     _FtFaceDataProxy(_FtFaceDataProxy &&) = delete;
     ~_FtFaceDataProxy() { cairo_font_face_destroy(_data->font_face); }
-    operator _ft_face_data *() { return _data; }
+    explicit operator _ft_face_data *() { return _data; }
 };
 
 static thread_local std::forward_list<_FtFaceDataProxy> _local_open_faces;
@@ -280,7 +280,8 @@ static bool _ft_new_face(FT_Library lib, const char *filename, char *font_data,
     tmpl.lib = lib;
     tmpl.hash = _djb_hash(tmpl.bytes, tmpl.size);
 
-    for (_ft_face_data *l : _local_open_faces) {
+    for (_FtFaceDataProxy &face_proxy : _local_open_faces) {
+        _ft_face_data *l = static_cast<_ft_face_data *>(face_proxy);
         if (_ft_face_data_equal(l, &tmpl)) {
             if (tmpl.fd != -1) {
 #    if defined(__SUNPRO_CC) && defined(__sun) && defined(__SVR4)
@@ -322,7 +323,10 @@ static bool _ft_new_face(FT_Library lib, const char *filename, char *font_data,
         return false;
     }
 
-    _local_open_faces.remove_if([](_ft_face_data *data) { return cairo_font_face_get_reference_count(data->font_face) == 1; });
+    _local_open_faces.remove_if([](_FtFaceDataProxy &face_proxy) {
+        _ft_face_data *data = static_cast<_ft_face_data *>(face_proxy);
+        return cairo_font_face_get_reference_count(data->font_face) == 1;
+    });
     _local_open_faces.emplace_front(l);
 
     *face_out = l->face;
diff --git a/poppler/CairoFontEngine.h b/poppler/CairoFontEngine.h
index 920c5623..47eb3e7f 100644
--- a/poppler/CairoFontEngine.h
+++ b/poppler/CairoFontEngine.h
@@ -15,7 +15,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2005, 2006 Kristian Høgsberg <krh at redhat.com>
-// Copyright (C) 2005, 2018, 2019 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2018, 2019, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2006, 2007 Jeff Muizelaar <jeff at infidigm.net>
 // Copyright (C) 2006, 2010 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2008, 2017 Adrian Johnson <ajohnson at redneon.com>
@@ -104,7 +104,7 @@ class CairoFontEngine
 {
 public:
     // Create a font engine.
-    CairoFontEngine(FT_Library libA);
+    explicit CairoFontEngine(FT_Library libA);
     ~CairoFontEngine();
     CairoFontEngine(const CairoFontEngine &) = delete;
     CairoFontEngine &operator=(const CairoFontEngine &other) = delete;
diff --git a/poppler/Catalog.h b/poppler/Catalog.h
index fc561e29..3f95f3a2 100644
--- a/poppler/Catalog.h
+++ b/poppler/Catalog.h
@@ -111,7 +111,7 @@ class POPPLER_PRIVATE_EXPORT Catalog
 {
 public:
     // Constructor.
-    Catalog(PDFDoc *docA);
+    explicit Catalog(PDFDoc *docA);
 
     // Destructor.
     ~Catalog();
diff --git a/poppler/CharCodeToUnicode.h b/poppler/CharCodeToUnicode.h
index e2434b23..d1100538 100644
--- a/poppler/CharCodeToUnicode.h
+++ b/poppler/CharCodeToUnicode.h
@@ -103,7 +103,7 @@ private:
     void addMapping(CharCode code, char *uStr, int n, int offset);
     void addMappingInt(CharCode code, Unicode u);
     CharCodeToUnicode();
-    CharCodeToUnicode(GooString *tagA);
+    explicit CharCodeToUnicode(GooString *tagA);
     CharCodeToUnicode(GooString *tagA, Unicode *mapA, CharCode mapLenA, bool copyMap, CharCodeToUnicodeString *sMapA, int sMapLenA, int sMapSizeA);
 
     GooString *tag;
@@ -120,7 +120,7 @@ private:
 class CharCodeToUnicodeCache
 {
 public:
-    CharCodeToUnicodeCache(int sizeA);
+    explicit CharCodeToUnicodeCache(int sizeA);
     ~CharCodeToUnicodeCache();
 
     CharCodeToUnicodeCache(const CharCodeToUnicodeCache &) = delete;
diff --git a/poppler/Dict.h b/poppler/Dict.h
index fb9af6c0..6a4d456b 100644
--- a/poppler/Dict.h
+++ b/poppler/Dict.h
@@ -16,7 +16,7 @@
 // Copyright (C) 2005 Kristian Høgsberg <krh at redhat.com>
 // Copyright (C) 2006 Krzysztof Kowalczyk <kkowalczyk at gmail.com>
 // Copyright (C) 2007-2008 Julien Rebetez <julienr at svn.gnome.org>
-// Copyright (C) 2010, 2017-2020 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2010, 2017-2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2010 Paweł Wiejacha <pawel.wiejacha at gmail.com>
 // Copyright (C) 2013 Thomas Freitag <Thomas.Freitag at alfa.de>
 // Copyright (C) 2017 Adrian Johnson <ajohnson at redneon.com>
@@ -48,8 +48,8 @@ class POPPLER_PRIVATE_EXPORT Dict
 {
 public:
     // Constructor.
-    Dict(XRef *xrefA);
-    Dict(const Dict *dictA);
+    explicit Dict(XRef *xrefA);
+    explicit Dict(const Dict *dictA);
     Dict *copy(XRef *xrefA) const;
 
     Dict(const Dict &) = delete;
diff --git a/poppler/FileSpec.h b/poppler/FileSpec.h
index e526e50e..09e05cab 100644
--- a/poppler/FileSpec.h
+++ b/poppler/FileSpec.h
@@ -6,7 +6,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2008 Carlos Garcia Campos <carlosgc at gnome.org>
-// Copyright (C) 2017-2019 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2017-2019, 2021 Albert Astals Cid <aacid at kde.org>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -22,7 +22,7 @@
 class POPPLER_PRIVATE_EXPORT EmbFile
 {
 public:
-    EmbFile(Object &&efStream);
+    explicit EmbFile(Object &&efStream);
     ~EmbFile();
 
     EmbFile(const EmbFile &) = delete;
@@ -52,7 +52,7 @@ private:
 class POPPLER_PRIVATE_EXPORT FileSpec
 {
 public:
-    FileSpec(const Object *fileSpec);
+    explicit FileSpec(const Object *fileSpec);
     ~FileSpec();
 
     FileSpec(const FileSpec &) = delete;
diff --git a/poppler/FlateEncoder.h b/poppler/FlateEncoder.h
index 3f30558a..e42dc4e2 100644
--- a/poppler/FlateEncoder.h
+++ b/poppler/FlateEncoder.h
@@ -40,7 +40,7 @@ extern "C" {
 class FlateEncoder : public FilterStream
 {
 public:
-    FlateEncoder(Stream *strA);
+    explicit FlateEncoder(Stream *strA);
     ~FlateEncoder() override;
     StreamKind getKind() const override { return strWeird; }
     void reset() override;
diff --git a/poppler/FontInfo.h b/poppler/FontInfo.h
index 85279859..50f2a6b7 100644
--- a/poppler/FontInfo.h
+++ b/poppler/FontInfo.h
@@ -3,7 +3,7 @@
 // FontInfo.h
 //
 // Copyright (C) 2005 Kristian Høgsberg <krh at redhat.com>
-// Copyright (C) 2005-2008, 2010, 2011, 2018, 2019 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005-2008, 2010, 2011, 2018, 2019, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2005 Brad Hards <bradh at frogmouth.net>
 // Copyright (C) 2009 Pino Toscano <pino at kde.org>
 // Copyright (C) 2012 Adrian Johnson <ajohnson at redneon.com>
@@ -91,7 +91,7 @@ class POPPLER_PRIVATE_EXPORT FontInfoScanner
 {
 public:
     // Constructor.
-    FontInfoScanner(PDFDoc *doc, int firstPage = 0);
+    explicit FontInfoScanner(PDFDoc *doc, int firstPage = 0);
     // Destructor.
     ~FontInfoScanner();
 
diff --git a/poppler/Function.h b/poppler/Function.h
index feb4a3c7..c1544f43 100644
--- a/poppler/Function.h
+++ b/poppler/Function.h
@@ -13,7 +13,7 @@
 // All changes made under the Poppler project to this file are licensed
 // under GPL version 2 or later
 //
-// Copyright (C) 2009, 2010, 2018, 2019 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2009, 2010, 2018, 2019, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2010 Christian Feuersänger <cfeuersaenger at googlemail.com>
 // Copyright (C) 2011 Andrea Canciani <ranma42 at gmail.com>
 // Copyright (C) 2012 Thomas Freitag <Thomas.Freitag at alfa.de>
@@ -88,7 +88,7 @@ public:
 protected:
     static Function *parse(Object *funcObj, std::set<int> *usedParents);
 
-    Function(const Function *func);
+    explicit Function(const Function *func);
 
     int m, n; // size of input and output tuples
     double // min and max values for function domain
@@ -139,7 +139,7 @@ public:
     int getSampleNumber() const { return nSamples; }
 
 private:
-    SampledFunction(const SampledFunction *func);
+    explicit SampledFunction(const SampledFunction *func);
 
     int // number of samples for each domain element
             sampleSize[funcMaxInputs];
@@ -177,7 +177,7 @@ public:
     double getE() const { return e; }
 
 private:
-    ExponentialFunction(const ExponentialFunction *func);
+    explicit ExponentialFunction(const ExponentialFunction *func);
 
     double c0[funcMaxOutputs];
     double c1[funcMaxOutputs];
@@ -207,7 +207,7 @@ public:
     const double *getScale() const { return scale; }
 
 private:
-    StitchingFunction(const StitchingFunction *func);
+    explicit StitchingFunction(const StitchingFunction *func);
 
     int k;
     Function **funcs;
@@ -234,7 +234,7 @@ public:
     const GooString *getCodeString() const { return codeString; }
 
 private:
-    PostScriptFunction(const PostScriptFunction *func);
+    explicit PostScriptFunction(const PostScriptFunction *func);
     bool parseCode(Stream *str, int *codePtr);
     GooString getToken(Stream *str);
     void resizeCode(int newSize);
diff --git a/poppler/Gfx.cc b/poppler/Gfx.cc
index 681fe2f7..d389f90d 100644
--- a/poppler/Gfx.cc
+++ b/poppler/Gfx.cc
@@ -5085,7 +5085,7 @@ void Gfx::opMarkPoint(Object args[], int numArgs)
 
 struct GfxStackStateSaver
 {
-    GfxStackStateSaver(Gfx *gfxA) : gfx(gfxA) { gfx->saveState(); }
+    explicit GfxStackStateSaver(Gfx *gfxA) : gfx(gfxA) { gfx->saveState(); }
 
     ~GfxStackStateSaver() { gfx->restoreState(); }
 
diff --git a/poppler/GfxState.cc b/poppler/GfxState.cc
index 4b0d6796..f6d42400 100644
--- a/poppler/GfxState.cc
+++ b/poppler/GfxState.cc
@@ -4519,7 +4519,7 @@ void GfxRadialShading::getParameterRange(double *lower, double *upper, double xM
 class GfxShadingBitBuf
 {
 public:
-    GfxShadingBitBuf(Stream *strA);
+    explicit GfxShadingBitBuf(Stream *strA);
     ~GfxShadingBitBuf();
     GfxShadingBitBuf(const GfxShadingBitBuf &) = delete;
     GfxShadingBitBuf &operator=(const GfxShadingBitBuf &) = delete;
diff --git a/poppler/GfxState.h b/poppler/GfxState.h
index 5aeb6e24..64a78ae0 100644
--- a/poppler/GfxState.h
+++ b/poppler/GfxState.h
@@ -742,7 +742,7 @@ private:
 class GfxPatternColorSpace : public GfxColorSpace
 {
 public:
-    GfxPatternColorSpace(GfxColorSpace *underA);
+    explicit GfxPatternColorSpace(GfxColorSpace *underA);
     ~GfxPatternColorSpace() override;
     GfxColorSpace *copy() const override;
     GfxColorSpaceMode getMode() const override { return csPattern; }
@@ -854,8 +854,8 @@ private:
 class GfxShading
 {
 public:
-    GfxShading(int typeA);
-    GfxShading(const GfxShading *shading);
+    explicit GfxShading(int typeA);
+    explicit GfxShading(const GfxShading *shading);
     virtual ~GfxShading();
 
     GfxShading(const GfxShading &) = delete;
@@ -904,7 +904,7 @@ class POPPLER_PRIVATE_EXPORT GfxUnivariateShading : public GfxShading
 {
 public:
     GfxUnivariateShading(int typeA, double t0A, double t1A, std::vector<std::unique_ptr<Function>> &&funcsA, bool extend0A, bool extend1A);
-    GfxUnivariateShading(const GfxUnivariateShading *shading);
+    explicit GfxUnivariateShading(const GfxUnivariateShading *shading);
     ~GfxUnivariateShading() override;
 
     double getDomain0() const { return t0; }
@@ -945,7 +945,7 @@ class POPPLER_PRIVATE_EXPORT GfxFunctionShading : public GfxShading
 {
 public:
     GfxFunctionShading(double x0A, double y0A, double x1A, double y1A, const double *matrixA, std::vector<std::unique_ptr<Function>> &&funcsA);
-    GfxFunctionShading(const GfxFunctionShading *shading);
+    explicit GfxFunctionShading(const GfxFunctionShading *shading);
     ~GfxFunctionShading() override;
 
     static GfxFunctionShading *parse(GfxResources *res, Dict *dict, OutputDev *out, GfxState *state);
@@ -981,7 +981,7 @@ class GfxAxialShading : public GfxUnivariateShading
 {
 public:
     GfxAxialShading(double x0A, double y0A, double x1A, double y1A, double t0A, double t1A, std::vector<std::unique_ptr<Function>> &&funcsA, bool extend0A, bool extend1A);
-    GfxAxialShading(const GfxAxialShading *shading);
+    explicit GfxAxialShading(const GfxAxialShading *shading);
     ~GfxAxialShading() override;
 
     static GfxAxialShading *parse(GfxResources *res, Dict *dict, OutputDev *out, GfxState *state);
@@ -1012,7 +1012,7 @@ class GfxRadialShading : public GfxUnivariateShading
 {
 public:
     GfxRadialShading(double x0A, double y0A, double r0A, double x1A, double y1A, double r1A, double t0A, double t1A, std::vector<std::unique_ptr<Function>> &&funcsA, bool extend0A, bool extend1A);
-    GfxRadialShading(const GfxRadialShading *shading);
+    explicit GfxRadialShading(const GfxRadialShading *shading);
     ~GfxRadialShading() override;
 
     static GfxRadialShading *parse(GfxResources *res, Dict *dict, OutputDev *out, GfxState *state);
@@ -1051,7 +1051,7 @@ class POPPLER_PRIVATE_EXPORT GfxGouraudTriangleShading : public GfxShading
 {
 public:
     GfxGouraudTriangleShading(int typeA, GfxGouraudVertex *verticesA, int nVerticesA, int (*trianglesA)[3], int nTrianglesA, std::vector<std::unique_ptr<Function>> &&funcsA);
-    GfxGouraudTriangleShading(const GfxGouraudTriangleShading *shading);
+    explicit GfxGouraudTriangleShading(const GfxGouraudTriangleShading *shading);
     ~GfxGouraudTriangleShading() override;
 
     static GfxGouraudTriangleShading *parse(GfxResources *res, int typeA, Dict *dict, Stream *str, OutputDev *out, GfxState *state);
@@ -1143,7 +1143,7 @@ class POPPLER_PRIVATE_EXPORT GfxPatchMeshShading : public GfxShading
 {
 public:
     GfxPatchMeshShading(int typeA, GfxPatch *patchesA, int nPatchesA, std::vector<std::unique_ptr<Function>> &&funcsA);
-    GfxPatchMeshShading(const GfxPatchMeshShading *shading);
+    explicit GfxPatchMeshShading(const GfxPatchMeshShading *shading);
     ~GfxPatchMeshShading() override;
 
     static GfxPatchMeshShading *parse(GfxResources *res, int typeA, Dict *dict, Stream *str, OutputDev *out, GfxState *state);
@@ -1243,7 +1243,7 @@ public:
     const GfxColor *getMatteColor() const { return (useMatte) ? &matteColor : nullptr; }
 
 private:
-    GfxImageColorMap(const GfxImageColorMap *colorMap);
+    explicit GfxImageColorMap(const GfxImageColorMap *colorMap);
 
     GfxColorSpace *colorSpace; // the image color space
     int bits; // bits per component
@@ -1317,7 +1317,7 @@ private:
     int size; // size of x/y arrays
     bool closed; // set if path is closed
 
-    GfxSubpath(const GfxSubpath *subpath);
+    explicit GfxSubpath(const GfxSubpath *subpath);
 };
 
 class POPPLER_PRIVATE_EXPORT GfxPath
@@ -1407,7 +1407,7 @@ public:
          * sure the path's memory structure is not changed during the
          * lifetime of the ReusablePathIterator.
          */
-        ReusablePathIterator(GfxPath *path);
+        explicit ReusablePathIterator(GfxPath *path);
 
         /**
          * Returns true if and only if the current iterator position is
diff --git a/poppler/GlobalParams.h b/poppler/GlobalParams.h
index 980dc87b..b98d33e0 100644
--- a/poppler/GlobalParams.h
+++ b/poppler/GlobalParams.h
@@ -13,7 +13,7 @@
 // All changes made under the Poppler project to this file are licensed
 // under GPL version 2 or later
 //
-// Copyright (C) 2005, 2007-2010, 2012, 2015, 2017-2020 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2007-2010, 2012, 2015, 2017-2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2005 Jonathan Blandford <jrb at redhat.com>
 // Copyright (C) 2006 Takashi Iwai <tiwai at suse.de>
 // Copyright (C) 2006 Kristian Høgsberg <krh at redhat.com>
@@ -83,7 +83,7 @@ class POPPLER_PRIVATE_EXPORT GlobalParams
 {
 public:
     // Initialize the global parameters
-    GlobalParams(const char *customPopplerDataDir = nullptr);
+    explicit GlobalParams(const char *customPopplerDataDir = nullptr);
 
     ~GlobalParams();
 
@@ -205,7 +205,7 @@ private:
 class POPPLER_PRIVATE_EXPORT GlobalParamsIniter
 {
 public:
-    GlobalParamsIniter(ErrorCallback errorCallback);
+    explicit GlobalParamsIniter(ErrorCallback errorCallback);
     ~GlobalParamsIniter();
 
     GlobalParamsIniter(const GlobalParamsIniter &) = delete;
diff --git a/poppler/Hints.cc b/poppler/Hints.cc
index c4f281ec..781cef7b 100644
--- a/poppler/Hints.cc
+++ b/poppler/Hints.cc
@@ -5,7 +5,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright 2010, 2012, 2013 Hib Eris <hib at hiberis.nl>
-// Copyright 2010, 2011, 2013, 2014, 2016-2019 Albert Astals Cid <aacid at kde.org>
+// Copyright 2010, 2011, 2013, 2014, 2016-2019, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright 2010, 2013 Pino Toscano <pino at kde.org>
 // Copyright 2013 Adrian Johnson <ajohnson at redneon.com>
 // Copyright 2014 Fabio D'Urso <fabiodurso at hotmail.it>
@@ -32,7 +32,7 @@
 class StreamBitReader
 {
 public:
-    StreamBitReader(Stream *strA) : str(strA), inputBits(0), isAtEof(false) { }
+    explicit StreamBitReader(Stream *strA) : str(strA), inputBits(0), isAtEof(false) { }
 
     void resetInputBits() { inputBits = 0; }
 
diff --git a/poppler/JArithmeticDecoder.h b/poppler/JArithmeticDecoder.h
index 1e172b47..ae31a995 100644
--- a/poppler/JArithmeticDecoder.h
+++ b/poppler/JArithmeticDecoder.h
@@ -15,7 +15,7 @@
 // All changes made under the Poppler project to this file are licensed
 // under GPL version 2 or later
 //
-// Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2018, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2019 Volker Krause <vkrause at kde.org>
 // Copyright (C) 2020 Even Rouault <even.rouault at spatialys.com>
 //
@@ -36,7 +36,7 @@ class Stream;
 class JArithmeticDecoderStats
 {
 public:
-    JArithmeticDecoderStats(int contextSizeA);
+    explicit JArithmeticDecoderStats(int contextSizeA);
     ~JArithmeticDecoderStats();
     JArithmeticDecoderStats(const JArithmeticDecoderStats &) = delete;
     JArithmeticDecoderStats &operator=(const JArithmeticDecoderStats &) = delete;
diff --git a/poppler/JBIG2Stream.cc b/poppler/JBIG2Stream.cc
index 36c66043..2dbc3ed9 100644
--- a/poppler/JBIG2Stream.cc
+++ b/poppler/JBIG2Stream.cc
@@ -550,7 +550,7 @@ enum JBIG2SegmentType
 class JBIG2Segment
 {
 public:
-    JBIG2Segment(unsigned int segNumA) { segNum = segNumA; }
+    explicit JBIG2Segment(unsigned int segNumA) { segNum = segNumA; }
     virtual ~JBIG2Segment();
     JBIG2Segment(const JBIG2Segment &) = delete;
     JBIG2Segment &operator=(const JBIG2Segment &) = delete;
@@ -579,7 +579,7 @@ class JBIG2Bitmap : public JBIG2Segment
 {
 public:
     JBIG2Bitmap(unsigned int segNumA, int wA, int hA);
-    JBIG2Bitmap(JBIG2Bitmap *bitmap);
+    explicit JBIG2Bitmap(JBIG2Bitmap *bitmap);
     ~JBIG2Bitmap() override;
     JBIG2SegmentType getType() override { return jbig2SegBitmap; }
     JBIG2Bitmap *getSlice(unsigned int x, unsigned int y, unsigned int wA, unsigned int hA);
diff --git a/poppler/JPEG2000Stream.h b/poppler/JPEG2000Stream.h
index a9b83c92..fbaac8fc 100644
--- a/poppler/JPEG2000Stream.h
+++ b/poppler/JPEG2000Stream.h
@@ -25,7 +25,7 @@ struct JPXStreamPrivate;
 class JPXStream : public FilterStream
 {
 public:
-    JPXStream(Stream *strA);
+    explicit JPXStream(Stream *strA);
     ~JPXStream() override;
 
     JPXStream(const JPXStream &other) = delete;
diff --git a/poppler/JSInfo.h b/poppler/JSInfo.h
index aca0d6b1..cfd3a0d4 100644
--- a/poppler/JSInfo.h
+++ b/poppler/JSInfo.h
@@ -5,7 +5,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright (C) 2013 Adrian Johnson <ajohnson at redneon.com>
-// Copyright (C) 2020 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2020, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, <info at kdab.com>. Work sponsored by the LiMux project of the city of Munich
 // Copyright (C) 2020 Oliver Sander <oliver.sander at tu-dresden.de>
 // Copyright (C) 2020 Nelson Benítez León <nbenitezl at gmail.com>
@@ -31,7 +31,7 @@ class POPPLER_PRIVATE_EXPORT JSInfo
 {
 public:
     // Constructor.
-    JSInfo(PDFDoc *doc, int firstPage = 0);
+    explicit JSInfo(PDFDoc *doc, int firstPage = 0);
 
     // Destructor.
     ~JSInfo();
diff --git a/poppler/Linearization.h b/poppler/Linearization.h
index 4842dbb3..b5b366bf 100644
--- a/poppler/Linearization.h
+++ b/poppler/Linearization.h
@@ -5,7 +5,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright 2010 Hib Eris <hib at hiberis.nl>
-// Copyright 2019 Albert Astals Cid <aacid at kde.org>
+// Copyright 2019, 2021 Albert Astals Cid <aacid at kde.org>
 //
 //========================================================================
 
@@ -22,7 +22,7 @@ class BaseStream;
 class Linearization
 {
 public:
-    Linearization(BaseStream *str);
+    explicit Linearization(BaseStream *str);
     ~Linearization();
 
     unsigned int getLength() const;
diff --git a/poppler/Link.h b/poppler/Link.h
index 63803b60..c058eb7f 100644
--- a/poppler/Link.h
+++ b/poppler/Link.h
@@ -17,7 +17,7 @@
 // Copyright (C) 2008 Hugo Mercier <hmercier31 at gmail.com>
 // Copyright (C) 2010, 2011 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2012 Tobias Koening <tobias.koenig at kdab.com>
-// Copyright (C) 2018-2020 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2018-2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, <info at kdab.com>. Work sponsored by the LiMux project of the city of Munich
 // Copyright (C) 2018 Intevation GmbH <intevation at intevation.de>
 // Copyright (C) 2019, 2020 Oliver Sander <oliver.sander at tu-dresden.de>
@@ -117,7 +117,7 @@ class POPPLER_PRIVATE_EXPORT LinkDest
 {
 public:
     // Build a LinkDest from the array.
-    LinkDest(const Array *a);
+    explicit LinkDest(const Array *a);
 
     // Copy a LinkDest.
     LinkDest *copy() const { return new LinkDest(this); }
@@ -155,7 +155,7 @@ private:
                      //   destFitV/BV use changeLeft
     bool ok; // set if created successfully
 
-    LinkDest(const LinkDest *dest);
+    explicit LinkDest(const LinkDest *dest);
 };
 
 //------------------------------------------------------------------------
@@ -166,7 +166,7 @@ class POPPLER_PRIVATE_EXPORT LinkGoTo : public LinkAction
 {
 public:
     // Build a LinkGoTo from a destination (dictionary, name, or string).
-    LinkGoTo(const Object *destObj);
+    explicit LinkGoTo(const Object *destObj);
 
     ~LinkGoTo() override;
 
@@ -223,7 +223,7 @@ class LinkLaunch : public LinkAction
 {
 public:
     // Build a LinkLaunch from an action dictionary.
-    LinkLaunch(const Object *actionObj);
+    explicit LinkLaunch(const Object *actionObj);
     ~LinkLaunch() override;
 
     // Was the LinkLaunch created successfully?
@@ -271,7 +271,7 @@ class LinkNamed : public LinkAction
 {
 public:
     // Build a LinkNamed given the action name.
-    LinkNamed(const Object *nameObj);
+    explicit LinkNamed(const Object *nameObj);
 
     ~LinkNamed() override;
 
@@ -300,7 +300,7 @@ public:
         operationTypeStop
     };
 
-    LinkMovie(const Object *obj);
+    explicit LinkMovie(const Object *obj);
 
     ~LinkMovie() override;
 
@@ -344,7 +344,7 @@ public:
         ResumeRendition
     };
 
-    LinkRendition(const Object *Obj);
+    explicit LinkRendition(const Object *Obj);
 
     ~LinkRendition() override;
 
@@ -377,7 +377,7 @@ private:
 class LinkSound : public LinkAction
 {
 public:
-    LinkSound(const Object *soundObj);
+    explicit LinkSound(const Object *soundObj);
 
     ~LinkSound() override;
 
@@ -407,7 +407,7 @@ class LinkJavaScript : public LinkAction
 {
 public:
     // Build a LinkJavaScript given the action name.
-    LinkJavaScript(Object *jsObj);
+    explicit LinkJavaScript(Object *jsObj);
 
     ~LinkJavaScript() override;
 
@@ -429,7 +429,7 @@ private:
 class LinkOCGState : public LinkAction
 {
 public:
-    LinkOCGState(const Object *obj);
+    explicit LinkOCGState(const Object *obj);
 
     ~LinkOCGState() override;
 
@@ -467,7 +467,7 @@ private:
 class LinkHide : public LinkAction
 {
 public:
-    LinkHide(const Object *hideObj);
+    explicit LinkHide(const Object *hideObj);
 
     ~LinkHide() override;
 
@@ -503,7 +503,7 @@ class POPPLER_PRIVATE_EXPORT LinkResetForm : public LinkAction
 {
 public:
     // Build a LinkResetForm.
-    LinkResetForm(const Object *nameObj);
+    explicit LinkResetForm(const Object *nameObj);
 
     ~LinkResetForm() override;
 
@@ -527,7 +527,7 @@ class LinkUnknown : public LinkAction
 {
 public:
     // Build a LinkUnknown with the specified action type.
-    LinkUnknown(const char *actionA);
+    explicit LinkUnknown(const char *actionA);
 
     ~LinkUnknown() override;
 
@@ -551,7 +551,7 @@ class POPPLER_PRIVATE_EXPORT Links
 {
 public:
     // Extract links from array of annotations.
-    Links(Annots *annots);
+    explicit Links(Annots *annots);
 
     // Destructor.
     ~Links();
diff --git a/poppler/MarkedContentOutputDev.h b/poppler/MarkedContentOutputDev.h
index b1d37649..43351ae4 100644
--- a/poppler/MarkedContentOutputDev.h
+++ b/poppler/MarkedContentOutputDev.h
@@ -5,7 +5,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright 2013 Igalia S.L.
-// Copyright 2018-2020 Albert Astals Cid <aacid at kde.org>
+// Copyright 2018-2021 Albert Astals Cid <aacid at kde.org>
 //
 //========================================================================
 
@@ -88,7 +88,7 @@ typedef std::vector<TextSpan> TextSpanArray;
 class POPPLER_PRIVATE_EXPORT MarkedContentOutputDev : public OutputDev
 {
 public:
-    MarkedContentOutputDev(int mcidA);
+    explicit MarkedContentOutputDev(int mcidA);
     ~MarkedContentOutputDev() override;
 
     virtual bool isOk() { return true; }
diff --git a/poppler/Movie.h b/poppler/Movie.h
index afc337e2..bfb71c60 100644
--- a/poppler/Movie.h
+++ b/poppler/Movie.h
@@ -5,7 +5,7 @@
 //---------------------------------------------------------------------------------
 // Hugo Mercier <hmercier31[at]gmail.com> (c) 2008
 // Carlos Garcia Campos <carlosgc at gnome.org> (c) 2010
-// Albert Astals Cid <aacid at kde.org> (c) 2017-2019
+// Albert Astals Cid <aacid at kde.org> (c) 2017-2019, 2021
 //
 // This program is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -76,7 +76,7 @@ class POPPLER_PRIVATE_EXPORT Movie
 {
 public:
     Movie(const Object *movieDict, const Object *aDict);
-    Movie(const Object *movieDict);
+    explicit Movie(const Object *movieDict);
     Movie(const Movie &other);
     ~Movie();
     Movie &operator=(const Movie &) = delete;
diff --git a/poppler/OptionalContent.h b/poppler/OptionalContent.h
index 3ab5f646..22b9409e 100644
--- a/poppler/OptionalContent.h
+++ b/poppler/OptionalContent.h
@@ -4,7 +4,7 @@
 //
 // Copyright 2007 Brad Hards <bradh at kde.org>
 // Copyright 2008 Carlos Garcia Campos <carlosgc at gnome.org>
-// Copyright 2013, 2018, 2019 Albert Astals Cid <aacid at kde.org>
+// Copyright 2013, 2018, 2019, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright 2018 Adam Reichold <adam.reichold at t-online.de>
 // Copyright 2019 Oliver Sander <oliver.sander at tu-dresden.de>
 //
@@ -84,9 +84,9 @@ public:
         ocUsageUnset
     };
 
-    OptionalContentGroup(Dict *dict);
+    explicit OptionalContentGroup(Dict *dict);
 
-    OptionalContentGroup(GooString *label);
+    explicit OptionalContentGroup(GooString *label);
 
     ~OptionalContentGroup();
 
diff --git a/poppler/PDFDoc.h b/poppler/PDFDoc.h
index 63ec25b4..9f5b0bf4 100644
--- a/poppler/PDFDoc.h
+++ b/poppler/PDFDoc.h
@@ -125,13 +125,13 @@ enum PDFSubtypeConformance
 class POPPLER_PRIVATE_EXPORT PDFDoc
 {
 public:
-    PDFDoc(const GooString *fileNameA, const GooString *ownerPassword = nullptr, const GooString *userPassword = nullptr, void *guiDataA = nullptr, const std::function<void()> &xrefReconstructedCallback = {});
+    explicit PDFDoc(const GooString *fileNameA, const GooString *ownerPassword = nullptr, const GooString *userPassword = nullptr, void *guiDataA = nullptr, const std::function<void()> &xrefReconstructedCallback = {});
 
 #ifdef _WIN32
     PDFDoc(wchar_t *fileNameA, int fileNameLen, GooString *ownerPassword = nullptr, GooString *userPassword = nullptr, void *guiDataA = nullptr, const std::function<void()> &xrefReconstructedCallback = {});
 #endif
 
-    PDFDoc(BaseStream *strA, const GooString *ownerPassword = nullptr, const GooString *userPassword = nullptr, void *guiDataA = nullptr, const std::function<void()> &xrefReconstructedCallback = {});
+    explicit PDFDoc(BaseStream *strA, const GooString *ownerPassword = nullptr, const GooString *userPassword = nullptr, void *guiDataA = nullptr, const std::function<void()> &xrefReconstructedCallback = {});
     ~PDFDoc();
 
     PDFDoc(const PDFDoc &) = delete;
diff --git a/poppler/PDFDocFactory.h b/poppler/PDFDocFactory.h
index 584f34a3..30ce72ab 100644
--- a/poppler/PDFDocFactory.h
+++ b/poppler/PDFDocFactory.h
@@ -5,7 +5,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright 2010 Hib Eris <hib at hiberis.nl>
-// Copyright 2010, 2018 Albert Astals Cid <aacid at kde.org>
+// Copyright 2010, 2018, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright 2019, 2021 Oliver Sander <oliver.sander at tu-dresden.de>
 //
 //========================================================================
@@ -37,7 +37,7 @@ class POPPLER_PRIVATE_EXPORT PDFDocFactory
 {
 
 public:
-    PDFDocFactory(std::vector<PDFDocBuilder *> *pdfDocBuilders = nullptr);
+    explicit PDFDocFactory(std::vector<PDFDocBuilder *> *pdfDocBuilders = nullptr);
     ~PDFDocFactory();
 
     PDFDocFactory(const PDFDocFactory &) = delete;
diff --git a/poppler/PageTransition.h b/poppler/PageTransition.h
index 0e0a8510..b8d51a9e 100644
--- a/poppler/PageTransition.h
+++ b/poppler/PageTransition.h
@@ -1,7 +1,7 @@
 /* PageTransition.cc
  * Copyright (C) 2005, Net Integration Technologies, Inc.
  * Copyright (C) 2015, Arseniy Lartsev <arseniy at alumni.chalmers.se>
- * Copyright (C) 2019, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2019, 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -62,7 +62,7 @@ class POPPLER_PRIVATE_EXPORT PageTransition
 {
 public:
     // Construct a Page Transition.
-    PageTransition(Object *trans);
+    explicit PageTransition(Object *trans);
 
     // Destructor.
     ~PageTransition();
diff --git a/poppler/PopplerCache.h b/poppler/PopplerCache.h
index f006cc88..68db1538 100644
--- a/poppler/PopplerCache.h
+++ b/poppler/PopplerCache.h
@@ -5,7 +5,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright (C) 2009 Koji Otani <sho at bbr.jp>
-// Copyright (C) 2009, 2010, 2017, 2018 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2009, 2010, 2017, 2018, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2010 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2018 Adam Reichold <adam.reichold at t-online.de>
 //
@@ -26,7 +26,7 @@ public:
     PopplerCache(const PopplerCache &) = delete;
     PopplerCache &operator=(const PopplerCache &other) = delete;
 
-    PopplerCache(std::size_t cacheSizeA) { entries.reserve(cacheSizeA); }
+    explicit PopplerCache(std::size_t cacheSizeA) { entries.reserve(cacheSizeA); }
 
     /* The item returned is owned by the cache */
     Item *lookup(const Key &key)
diff --git a/poppler/PreScanOutputDev.h b/poppler/PreScanOutputDev.h
index 2e0aae50..9b3234a4 100644
--- a/poppler/PreScanOutputDev.h
+++ b/poppler/PreScanOutputDev.h
@@ -40,7 +40,7 @@ class PreScanOutputDev : public OutputDev
 {
 public:
     // Constructor.
-    PreScanOutputDev(PSLevel levelA);
+    explicit PreScanOutputDev(PSLevel levelA);
 
     // Destructor.
     ~PreScanOutputDev() override;
diff --git a/poppler/Rendition.h b/poppler/Rendition.h
index 97ca5b91..1a14c39e 100644
--- a/poppler/Rendition.h
+++ b/poppler/Rendition.h
@@ -5,7 +5,7 @@
 //---------------------------------------------------------------------------------
 // Hugo Mercier <hmercier31[at]gmail.com> (c) 2008
 // Carlos Garcia Campos <carlosgc at gnome.org> (c) 2010
-// Albert Astals Cid <aacid at kde.org> (C) 2017, 2018
+// Albert Astals Cid <aacid at kde.org> (C) 2017, 2018, 2021
 //
 // This program is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -121,7 +121,7 @@ struct MediaParameters
 class POPPLER_PRIVATE_EXPORT MediaRendition
 {
 public:
-    MediaRendition(Object *obj);
+    explicit MediaRendition(Object *obj);
     MediaRendition(const MediaRendition &other);
     ~MediaRendition();
     MediaRendition &operator=(const MediaRendition &) = delete;
diff --git a/poppler/SecurityHandler.h b/poppler/SecurityHandler.h
index 13cf1ed1..42dc05d4 100644
--- a/poppler/SecurityHandler.h
+++ b/poppler/SecurityHandler.h
@@ -13,7 +13,7 @@
 // All changes made under the Poppler project to this file are licensed
 // under GPL version 2 or later
 //
-// Copyright (C) 2012, 2018, 2020 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2012, 2018, 2020, 2021 Albert Astals Cid <aacid at kde.org>
 //
 // To see a description of the changes please see the Changelog file that
 // came with your tarball or type make ChangeLog if you are building from git
@@ -39,7 +39,7 @@ class SecurityHandler
 public:
     static SecurityHandler *make(PDFDoc *docA, Object *encryptDictA);
 
-    SecurityHandler(PDFDoc *docA);
+    explicit SecurityHandler(PDFDoc *docA);
     virtual ~SecurityHandler();
 
     SecurityHandler(const SecurityHandler &) = delete;
diff --git a/poppler/Sound.h b/poppler/Sound.h
index ee34b77e..aa080bfd 100644
--- a/poppler/Sound.h
+++ b/poppler/Sound.h
@@ -1,6 +1,6 @@
 /* Sound.h - an object that holds the sound structure
  * Copyright (C) 2006-2007, Pino Toscano <pino at kde.org>
- * Copyright (C) 2017-2020, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2017-2021, Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2020, Oliver Sander <oliver.sander at tu-dresden.de>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -68,7 +68,7 @@ public:
 
 private:
     // Create a sound. The Object obj is ensured to be a Stream with a Dict
-    Sound(const Object *obj, bool readAttrs = true);
+    explicit Sound(const Object *obj, bool readAttrs = true);
 
     Object streamObj;
     SoundKind kind;
diff --git a/poppler/SplashOutputDev.cc b/poppler/SplashOutputDev.cc
index dfc75fe6..10e40a0c 100644
--- a/poppler/SplashOutputDev.cc
+++ b/poppler/SplashOutputDev.cc
@@ -1068,7 +1068,7 @@ static const SplashBlendFunc splashOutBlendFuncs[] = { nullptr,
 class SplashOutFontFileID : public SplashFontFileID
 {
 public:
-    SplashOutFontFileID(const Ref *rA) { r = *rA; }
+    explicit SplashOutFontFileID(const Ref *rA) { r = *rA; }
 
     ~SplashOutFontFileID() override;
 
diff --git a/poppler/Stream.cc b/poppler/Stream.cc
index 09773861..406870e7 100644
--- a/poppler/Stream.cc
+++ b/poppler/Stream.cc
@@ -227,7 +227,7 @@ bool Stream::isEncrypted() const
 class BaseStreamStream : public Stream
 {
 public:
-    BaseStreamStream(Stream *strA) : str(strA) { }
+    explicit BaseStreamStream(Stream *strA) : str(strA) { }
     ~BaseStreamStream() override;
 
     StreamKind getKind() const override { return str->getBaseStream()->getKind(); }
diff --git a/poppler/Stream.h b/poppler/Stream.h
index b839f7c2..97ce5ea0 100644
--- a/poppler/Stream.h
+++ b/poppler/Stream.h
@@ -408,7 +408,7 @@ private:
 class FilterStream : public Stream
 {
 public:
-    FilterStream(Stream *strA);
+    explicit FilterStream(Stream *strA);
     ~FilterStream() override;
     void close() override;
     Goffset getPos() override { return str->getPos(); }
@@ -793,7 +793,7 @@ private:
 class ASCIIHexStream : public FilterStream
 {
 public:
-    ASCIIHexStream(Stream *strA);
+    explicit ASCIIHexStream(Stream *strA);
     ~ASCIIHexStream() override;
     StreamKind getKind() const override { return strASCIIHex; }
     void reset() override;
@@ -819,7 +819,7 @@ private:
 class ASCII85Stream : public FilterStream
 {
 public:
-    ASCII85Stream(Stream *strA);
+    explicit ASCII85Stream(Stream *strA);
     ~ASCII85Stream() override;
     StreamKind getKind() const override { return strASCII85; }
     void reset() override;
@@ -907,7 +907,7 @@ private:
 class RunLengthStream : public FilterStream
 {
 public:
-    RunLengthStream(Stream *strA);
+    explicit RunLengthStream(Stream *strA);
     ~RunLengthStream() override;
     StreamKind getKind() const override { return strRunLength; }
     void reset() override;
@@ -1212,7 +1212,7 @@ private:
 class EOFStream : public FilterStream
 {
 public:
-    EOFStream(Stream *strA);
+    explicit EOFStream(Stream *strA);
     ~EOFStream() override;
     StreamKind getKind() const override { return strWeird; }
     void reset() override { }
@@ -1274,7 +1274,7 @@ private:
 class ASCIIHexEncoder : public FilterStream
 {
 public:
-    ASCIIHexEncoder(Stream *strA);
+    explicit ASCIIHexEncoder(Stream *strA);
     ~ASCIIHexEncoder() override;
     StreamKind getKind() const override { return strWeird; }
     void reset() override;
@@ -1301,7 +1301,7 @@ private:
 class ASCII85Encoder : public FilterStream
 {
 public:
-    ASCII85Encoder(Stream *strA);
+    explicit ASCII85Encoder(Stream *strA);
     ~ASCII85Encoder() override;
     StreamKind getKind() const override { return strWeird; }
     void reset() override;
@@ -1328,7 +1328,7 @@ private:
 class RunLengthEncoder : public FilterStream
 {
 public:
-    RunLengthEncoder(Stream *strA);
+    explicit RunLengthEncoder(Stream *strA);
     ~RunLengthEncoder() override;
     StreamKind getKind() const override { return strWeird; }
     void reset() override;
@@ -1362,7 +1362,7 @@ struct LZWEncoderNode
 class LZWEncoder : public FilterStream
 {
 public:
-    LZWEncoder(Stream *strA);
+    explicit LZWEncoder(Stream *strA);
     ~LZWEncoder() override;
     StreamKind getKind() const override { return strWeird; }
     void reset() override;
@@ -1392,7 +1392,7 @@ private:
 class CMYKGrayEncoder : public FilterStream
 {
 public:
-    CMYKGrayEncoder(Stream *strA);
+    explicit CMYKGrayEncoder(Stream *strA);
     ~CMYKGrayEncoder() override;
     StreamKind getKind() const override { return strWeird; }
     void reset() override;
@@ -1418,7 +1418,7 @@ private:
 class RGBGrayEncoder : public FilterStream
 {
 public:
-    RGBGrayEncoder(Stream *strA);
+    explicit RGBGrayEncoder(Stream *strA);
     ~RGBGrayEncoder() override;
     StreamKind getKind() const override { return strWeird; }
     void reset() override;
@@ -1447,7 +1447,7 @@ private:
 class SplashBitmapCMYKEncoder : public Stream
 {
 public:
-    SplashBitmapCMYKEncoder(SplashBitmap *bitmapA);
+    explicit SplashBitmapCMYKEncoder(SplashBitmap *bitmapA);
     ~SplashBitmapCMYKEncoder() override;
     StreamKind getKind() const override { return strWeird; }
     void reset() override;
diff --git a/poppler/StructElement.h b/poppler/StructElement.h
index 6c8e47e1..0d53e4ef 100644
--- a/poppler/StructElement.h
+++ b/poppler/StructElement.h
@@ -6,7 +6,7 @@
 //
 // Copyright 2013, 2014 Igalia S.L.
 // Copyright 2014 Luigi Scarso <luigi.scarso at gmail.com>
-// Copyright 2014, 2018, 2019 Albert Astals Cid <aacid at kde.org>
+// Copyright 2014, 2018, 2019, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright 2018 Adam Reichold <adam.reichold at t-online.de>
 //
 //========================================================================
@@ -370,8 +370,8 @@ private:
             Ref ref;
         };
 
-        ContentData(int mcidA) : mcid(mcidA) { }
-        ContentData(const Ref r) { ref = r; }
+        explicit ContentData(int mcidA) : mcid(mcidA) { }
+        explicit ContentData(const Ref r) { ref = r; }
     };
 
     // Common data
diff --git a/poppler/TextOutputDev.cc b/poppler/TextOutputDev.cc
index 7bc1b920..041503f6 100644
--- a/poppler/TextOutputDev.cc
+++ b/poppler/TextOutputDev.cc
@@ -4389,7 +4389,7 @@ GooString *TextPage::getText(double xMin, double yMin, double xMax, double yMax,
 class TextSelectionVisitor
 {
 public:
-    TextSelectionVisitor(TextPage *page);
+    explicit TextSelectionVisitor(TextPage *page);
     virtual ~TextSelectionVisitor();
     TextSelectionVisitor(const TextSelectionVisitor &) = delete;
     TextSelectionVisitor &operator=(const TextSelectionVisitor &) = delete;
@@ -4408,7 +4408,7 @@ TextSelectionVisitor::~TextSelectionVisitor() = default;
 class TextSelectionDumper : public TextSelectionVisitor
 {
 public:
-    TextSelectionDumper(TextPage *page);
+    explicit TextSelectionDumper(TextPage *page);
     ~TextSelectionDumper() override;
 
     void visitBlock(TextBlock *block, TextLine *begin, TextLine *end, const PDFRectangle *selection) override {};
diff --git a/poppler/TextOutputDev.h b/poppler/TextOutputDev.h
index a5e81f2d..b564e854 100644
--- a/poppler/TextOutputDev.h
+++ b/poppler/TextOutputDev.h
@@ -17,7 +17,7 @@
 // Copyright (C) 2006 Ed Catmur <ed at catmur.co.uk>
 // Copyright (C) 2007, 2008, 2011, 2013 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2007, 2017 Adrian Johnson <ajohnson at redneon.com>
-// Copyright (C) 2008, 2010, 2015, 2016, 2018, 2019 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2008, 2010, 2015, 2016, 2018, 2019, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2010 Brian Ewins <brian.ewins at gmail.com>
 // Copyright (C) 2012, 2013, 2015, 2016 Jason Crain <jason at aquaticape.us>
 // Copyright (C) 2013 Thomas Freitag <Thomas.Freitag at alfa.de>
@@ -87,7 +87,7 @@ enum EndOfLineKind
 class POPPLER_PRIVATE_EXPORT TextFontInfo
 {
 public:
-    TextFontInfo(const GfxState *state);
+    explicit TextFontInfo(const GfxState *state);
     ~TextFontInfo();
 
     TextFontInfo(const TextFontInfo &) = delete;
@@ -556,7 +556,7 @@ class POPPLER_PRIVATE_EXPORT TextPage
 {
 public:
     // Constructor.
-    TextPage(bool rawOrderA, bool discardDiagA = false);
+    explicit TextPage(bool rawOrderA, bool discardDiagA = false);
 
     TextPage(const TextPage &) = delete;
     TextPage &operator=(const TextPage &) = delete;
@@ -728,7 +728,7 @@ class POPPLER_PRIVATE_EXPORT ActualText
 {
 public:
     // Create an ActualText
-    ActualText(TextPage *out);
+    explicit ActualText(TextPage *out);
     ~ActualText();
 
     ActualText(const ActualText &) = delete;
diff --git a/poppler/UnicodeMap.h b/poppler/UnicodeMap.h
index 9ec22c4c..c04d2d12 100644
--- a/poppler/UnicodeMap.h
+++ b/poppler/UnicodeMap.h
@@ -16,7 +16,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2017 Adrian Johnson <ajohnson at redneon.com>
-// Copyright (C) 2018-2020 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2018-2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2018 Adam Reichold <adam.reichold at t-online.de>
 // Copyright (C) 2019 Volker Krause <vkrause at kde.org>
 //
@@ -96,7 +96,7 @@ public:
     int mapUnicode(Unicode u, char *buf, int bufSize) const;
 
 private:
-    UnicodeMap(const std::string &encodingNameA);
+    explicit UnicodeMap(const std::string &encodingNameA);
 
     std::string encodingName;
     UnicodeMapKind kind;
diff --git a/poppler/ViewerPreferences.h b/poppler/ViewerPreferences.h
index 404929b6..b976ea96 100644
--- a/poppler/ViewerPreferences.h
+++ b/poppler/ViewerPreferences.h
@@ -6,6 +6,7 @@
 //
 // Copyright 2011 Pino Toscano <pino at kde.org>
 // Copyright 2019 Marek Kasik <mkasik at redhat.com>
+// Copyright 2021 Albert Astals Cid <aacid at kde.org>
 //
 //========================================================================
 
@@ -48,7 +49,7 @@ public:
         duplexDuplexFlipLongEdge
     };
 
-    ViewerPreferences(Dict *prefDict);
+    explicit ViewerPreferences(Dict *prefDict);
     ~ViewerPreferences();
 
     bool getHideToolbar() const { return hideToolbar; }
diff --git a/poppler/XRef.h b/poppler/XRef.h
index 81151dc5..76069a1b 100644
--- a/poppler/XRef.h
+++ b/poppler/XRef.h
@@ -14,7 +14,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2005 Brad Hards <bradh at frogmouth.net>
-// Copyright (C) 2006, 2008, 2010-2013, 2017-2020 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2006, 2008, 2010-2013, 2017-2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2007-2008 Julien Rebetez <julienr at svn.gnome.org>
 // Copyright (C) 2007 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2010 Ilya Gorenbein <igorenbein at finjan.com>
@@ -102,7 +102,7 @@ public:
     // Constructor, create an empty XRef, used for PDF writing
     XRef();
     // Constructor, create an empty XRef but with info dict, used for PDF writing
-    XRef(const Object *trailerDictA);
+    explicit XRef(const Object *trailerDictA);
     // Constructor.  Read xref table from stream.
     XRef(BaseStream *strA, Goffset pos, Goffset mainXRefEntriesOffsetA = 0, bool *wasReconstructed = nullptr, bool reconstruct = false, const std::function<void()> &xrefReconstructedCallback = {});
 
@@ -279,7 +279,7 @@ private:
     class XRefTableWriter : public XRefWriter
     {
     public:
-        XRefTableWriter(OutStream *outStrA);
+        explicit XRefTableWriter(OutStream *outStrA);
         void startSection(int first, int count) override;
         void writeEntry(Goffset offset, int gen, XRefEntryType type) override;
 
diff --git a/qt5/demos/abstractinfodock.h b/qt5/demos/abstractinfodock.h
index 557fca7e..9dd2576f 100644
--- a/qt5/demos/abstractinfodock.h
+++ b/qt5/demos/abstractinfodock.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,7 +29,7 @@ class AbstractInfoDock : public QDockWidget, public DocumentObserver
     Q_OBJECT
 
 public:
-    AbstractInfoDock(QWidget *parent = nullptr);
+    explicit AbstractInfoDock(QWidget *parent = nullptr);
     ~AbstractInfoDock() override;
 
     void documentLoaded() override;
diff --git a/qt5/demos/embeddedfiles.h b/qt5/demos/embeddedfiles.h
index 7ddb6b1e..e4a40403 100644
--- a/qt5/demos/embeddedfiles.h
+++ b/qt5/demos/embeddedfiles.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,7 +29,7 @@ class EmbeddedFilesDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    EmbeddedFilesDock(QWidget *parent = nullptr);
+    explicit EmbeddedFilesDock(QWidget *parent = nullptr);
     ~EmbeddedFilesDock() override;
 
     void documentLoaded() override;
diff --git a/qt5/demos/fonts.h b/qt5/demos/fonts.h
index e056e01b..e8fed63f 100644
--- a/qt5/demos/fonts.h
+++ b/qt5/demos/fonts.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,7 +29,7 @@ class FontsDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    FontsDock(QWidget *parent = nullptr);
+    explicit FontsDock(QWidget *parent = nullptr);
     ~FontsDock() override;
 
     void documentClosed() override;
diff --git a/qt5/demos/info.h b/qt5/demos/info.h
index d964a9f4..0bbcf75d 100644
--- a/qt5/demos/info.h
+++ b/qt5/demos/info.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,7 +29,7 @@ class InfoDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    InfoDock(QWidget *parent = nullptr);
+    explicit InfoDock(QWidget *parent = nullptr);
     ~InfoDock() override;
 
     void documentClosed() override;
diff --git a/qt5/demos/metadata.h b/qt5/demos/metadata.h
index f5dc391d..0d58e840 100644
--- a/qt5/demos/metadata.h
+++ b/qt5/demos/metadata.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,7 +29,7 @@ class MetadataDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    MetadataDock(QWidget *parent = nullptr);
+    explicit MetadataDock(QWidget *parent = nullptr);
     ~MetadataDock() override;
 
     void documentClosed() override;
diff --git a/qt5/demos/navigationtoolbar.h b/qt5/demos/navigationtoolbar.h
index 0f63e649..f312d28f 100644
--- a/qt5/demos/navigationtoolbar.h
+++ b/qt5/demos/navigationtoolbar.h
@@ -1,7 +1,7 @@
 /*
  * Copyright (C) 2008-2009, Pino Toscano <pino at kde.org>
  * Copyright (C) 2013, Fabio D'Urso <fabiodurso at hotmail.it>
- * Copyright (C) 2019, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2019, 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -33,7 +33,7 @@ class NavigationToolBar : public QToolBar, public DocumentObserver
     Q_OBJECT
 
 public:
-    NavigationToolBar(QWidget *parent = nullptr);
+    explicit NavigationToolBar(QWidget *parent = nullptr);
     ~NavigationToolBar() override;
 
     void documentLoaded() override;
diff --git a/qt5/demos/optcontent.h b/qt5/demos/optcontent.h
index 7764a42b..9da451be 100644
--- a/qt5/demos/optcontent.h
+++ b/qt5/demos/optcontent.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,7 +29,7 @@ class OptContentDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    OptContentDock(QWidget *parent = nullptr);
+    explicit OptContentDock(QWidget *parent = nullptr);
     ~OptContentDock() override;
 
     void documentLoaded() override;
diff --git a/qt5/demos/pageview.h b/qt5/demos/pageview.h
index 9149ec0d..c7446d43 100644
--- a/qt5/demos/pageview.h
+++ b/qt5/demos/pageview.h
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) 2008-2009, Pino Toscano <pino at kde.org>
  * Copyright (C) 2013, Fabio D'Urso <fabiodurso at hotmail.it>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -31,7 +32,7 @@ class PageView : public QScrollArea, public DocumentObserver
     Q_OBJECT
 
 public:
-    PageView(QWidget *parent = nullptr);
+    explicit PageView(QWidget *parent = nullptr);
     ~PageView() override;
 
     void documentLoaded() override;
diff --git a/qt5/demos/permissions.h b/qt5/demos/permissions.h
index 9c5072b8..06293ccc 100644
--- a/qt5/demos/permissions.h
+++ b/qt5/demos/permissions.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008-2009, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,7 +29,7 @@ class PermissionsDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    PermissionsDock(QWidget *parent = nullptr);
+    explicit PermissionsDock(QWidget *parent = nullptr);
     ~PermissionsDock() override;
 
     void documentClosed() override;
diff --git a/qt5/demos/thumbnails.h b/qt5/demos/thumbnails.h
index 3eda6cf7..a568df65 100644
--- a/qt5/demos/thumbnails.h
+++ b/qt5/demos/thumbnails.h
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) 2009, Shawn Rutledge <shawn.t.rutledge at gmail.com>
  * Copyright (C) 2009, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -30,7 +31,7 @@ class ThumbnailsDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    ThumbnailsDock(QWidget *parent = nullptr);
+    explicit ThumbnailsDock(QWidget *parent = nullptr);
     ~ThumbnailsDock() override;
 
     void documentClosed() override;
diff --git a/qt5/demos/toc.h b/qt5/demos/toc.h
index b6c77ba7..fa5ec591 100644
--- a/qt5/demos/toc.h
+++ b/qt5/demos/toc.h
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
- * Copyright (C) 2019, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2019, 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -29,7 +29,7 @@ class TocDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    TocDock(QWidget *parent = nullptr);
+    explicit TocDock(QWidget *parent = nullptr);
     ~TocDock() override;
 
     void documentClosed() override;
diff --git a/qt5/demos/viewer.h b/qt5/demos/viewer.h
index 8f2ee3a2..752a00ef 100644
--- a/qt5/demos/viewer.h
+++ b/qt5/demos/viewer.h
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
  * Copyright (C) 2021, Mahmoud Khalil <mahmoudkhalil11 at gmail.com>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -37,7 +38,7 @@ class PdfViewer : public QMainWindow
     friend class DocumentObserver;
 
 public:
-    PdfViewer(QWidget *parent = nullptr);
+    explicit PdfViewer(QWidget *parent = nullptr);
     ~PdfViewer() override;
 
     QSize sizeHint() const override;
diff --git a/qt5/src/QPainterOutputDev.h b/qt5/src/QPainterOutputDev.h
index 0ad858a6..c8dc1c0c 100644
--- a/qt5/src/QPainterOutputDev.h
+++ b/qt5/src/QPainterOutputDev.h
@@ -14,7 +14,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2005 Brad Hards <bradh at frogmouth.net>
-// Copyright (C) 2005, 2018, 2019 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2018, 2019, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2009, 2011 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2010 Pino Toscano <pino at kde.org>
 // Copyright (C) 2011 Andreas Hartmetz <ahartmetz at gmail.com>
@@ -57,7 +57,7 @@ class QPainterOutputDev : public OutputDev
 {
 public:
     // Constructor.
-    QPainterOutputDev(QPainter *painter);
+    explicit QPainterOutputDev(QPainter *painter);
 
     // Destructor.
     ~QPainterOutputDev() override;
diff --git a/qt5/src/poppler-annotation.h b/qt5/src/poppler-annotation.h
index cb593e6c..ca9489ed 100644
--- a/qt5/src/poppler-annotation.h
+++ b/qt5/src/poppler-annotation.h
@@ -1,5 +1,5 @@
 /* poppler-annotation.h: qt interface to poppler
- * Copyright (C) 2006-2008, 2012, 2013, 2018-2020 Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2006-2008, 2012, 2013, 2018-2021 Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2006, 2008 Pino Toscano <pino at kde.org>
  * Copyright (C) 2007, Brad Hards <bradh at frogmouth.net>
  * Copyright (C) 2010, Philip Lorenz <lorenzph+freedesktop at gmail.com>
@@ -450,7 +450,7 @@ public:
 
 protected:
     /// \cond PRIVATE
-    Annotation(AnnotationPrivate &dd);
+    explicit Annotation(AnnotationPrivate &dd);
     Annotation(AnnotationPrivate &dd, const QDomNode &annNode);
     void storeBaseAnnotationProperties(QDomNode &annNode, QDomDocument &document) const;
     Q_DECLARE_PRIVATE(Annotation)
@@ -487,7 +487,7 @@ public:
         TypeWriter
     };
 
-    TextAnnotation(TextType type);
+    explicit TextAnnotation(TextType type);
     ~TextAnnotation() override;
     SubType subType() const override;
 
@@ -538,8 +538,8 @@ public:
     void setInplaceIntent(InplaceIntent intent);
 
 private:
-    TextAnnotation(const QDomNode &node);
-    TextAnnotation(TextAnnotationPrivate &dd);
+    explicit TextAnnotation(const QDomNode &node);
+    explicit TextAnnotation(TextAnnotationPrivate &dd);
     void store(QDomNode &parentNode, QDomDocument &document) const override;
     void setTextType(TextType type);
     Q_DECLARE_PRIVATE(TextAnnotation)
@@ -586,7 +586,7 @@ public:
     };
 
     /// \since 0.20
-    LineAnnotation(LineType type);
+    explicit LineAnnotation(LineType type);
     ~LineAnnotation() override;
     SubType subType() const override;
 
@@ -621,8 +621,8 @@ public:
     void setLineIntent(LineIntent intent);
 
 private:
-    LineAnnotation(const QDomNode &node);
-    LineAnnotation(LineAnnotationPrivate &dd);
+    explicit LineAnnotation(const QDomNode &node);
+    explicit LineAnnotation(LineAnnotationPrivate &dd);
     void store(QDomNode &parentNode, QDomDocument &document) const override;
     void setLineType(LineType type);
     Q_DECLARE_PRIVATE(LineAnnotation)
@@ -659,8 +659,8 @@ public:
     void setGeomInnerColor(const QColor &color);
 
 private:
-    GeomAnnotation(const QDomNode &node);
-    GeomAnnotation(GeomAnnotationPrivate &dd);
+    explicit GeomAnnotation(const QDomNode &node);
+    explicit GeomAnnotation(GeomAnnotationPrivate &dd);
     void store(QDomNode &parentNode, QDomDocument &document) const override;
     Q_DECLARE_PRIVATE(GeomAnnotation)
     Q_DISABLE_COPY(GeomAnnotation)
@@ -728,8 +728,8 @@ public:
     void setHighlightQuads(const QList<Quad> &quads);
 
 private:
-    HighlightAnnotation(const QDomNode &node);
-    HighlightAnnotation(HighlightAnnotationPrivate &dd);
+    explicit HighlightAnnotation(const QDomNode &node);
+    explicit HighlightAnnotation(HighlightAnnotationPrivate &dd);
     void store(QDomNode &parentNode, QDomDocument &document) const override;
     Q_DECLARE_PRIVATE(HighlightAnnotation)
     Q_DISABLE_COPY(HighlightAnnotation)
@@ -779,8 +779,8 @@ public:
     void setStampIconName(const QString &name);
 
 private:
-    StampAnnotation(const QDomNode &node);
-    StampAnnotation(StampAnnotationPrivate &dd);
+    explicit StampAnnotation(const QDomNode &node);
+    explicit StampAnnotation(StampAnnotationPrivate &dd);
     void store(QDomNode &parentNode, QDomDocument &document) const override;
     Q_DECLARE_PRIVATE(StampAnnotation)
     Q_DISABLE_COPY(StampAnnotation)
@@ -805,9 +805,9 @@ public:
     void setInkPaths(const QList<QLinkedList<QPointF>> &paths);
 
 private:
-    InkAnnotation(const QDomNode &node);
+    explicit InkAnnotation(const QDomNode &node);
     void store(QDomNode &parentNode, QDomDocument &document) const override;
-    InkAnnotation(InkAnnotationPrivate &dd);
+    explicit InkAnnotation(InkAnnotationPrivate &dd);
     Q_DECLARE_PRIVATE(InkAnnotation)
     Q_DISABLE_COPY(InkAnnotation)
 };
@@ -843,8 +843,8 @@ public:
 
 private:
     LinkAnnotation();
-    LinkAnnotation(const QDomNode &node);
-    LinkAnnotation(LinkAnnotationPrivate &dd);
+    explicit LinkAnnotation(const QDomNode &node);
+    explicit LinkAnnotation(LinkAnnotationPrivate &dd);
     void store(QDomNode &parentNode, QDomDocument &document) const override;
     Q_DECLARE_PRIVATE(LinkAnnotation)
     Q_DISABLE_COPY(LinkAnnotation)
@@ -878,8 +878,8 @@ public:
     void setCaretSymbol(CaretSymbol symbol);
 
 private:
-    CaretAnnotation(const QDomNode &node);
-    CaretAnnotation(CaretAnnotationPrivate &dd);
+    explicit CaretAnnotation(const QDomNode &node);
+    explicit CaretAnnotation(CaretAnnotationPrivate &dd);
     void store(QDomNode &parentNode, QDomDocument &document) const override;
     Q_DECLARE_PRIVATE(CaretAnnotation)
     Q_DISABLE_COPY(CaretAnnotation)
@@ -922,8 +922,8 @@ public:
 
 private:
     FileAttachmentAnnotation();
-    FileAttachmentAnnotation(const QDomNode &node);
-    FileAttachmentAnnotation(FileAttachmentAnnotationPrivate &dd);
+    explicit FileAttachmentAnnotation(const QDomNode &node);
+    explicit FileAttachmentAnnotation(FileAttachmentAnnotationPrivate &dd);
     void store(QDomNode &parentNode, QDomDocument &document) const override;
     Q_DECLARE_PRIVATE(FileAttachmentAnnotation)
     Q_DISABLE_COPY(FileAttachmentAnnotation)
@@ -966,8 +966,8 @@ public:
 
 private:
     SoundAnnotation();
-    SoundAnnotation(const QDomNode &node);
-    SoundAnnotation(SoundAnnotationPrivate &dd);
+    explicit SoundAnnotation(const QDomNode &node);
+    explicit SoundAnnotation(SoundAnnotationPrivate &dd);
     void store(QDomNode &parentNode, QDomDocument &document) const override;
     Q_DECLARE_PRIVATE(SoundAnnotation)
     Q_DISABLE_COPY(SoundAnnotation)
@@ -1010,8 +1010,8 @@ public:
 
 private:
     MovieAnnotation();
-    MovieAnnotation(const QDomNode &node);
-    MovieAnnotation(MovieAnnotationPrivate &dd);
+    explicit MovieAnnotation(const QDomNode &node);
+    explicit MovieAnnotation(MovieAnnotationPrivate &dd);
     void store(QDomNode &parentNode, QDomDocument &document) const override;
     Q_DECLARE_PRIVATE(MovieAnnotation)
     Q_DISABLE_COPY(MovieAnnotation)
@@ -1065,7 +1065,7 @@ public:
 
 private:
     ScreenAnnotation();
-    ScreenAnnotation(ScreenAnnotationPrivate &dd);
+    explicit ScreenAnnotation(ScreenAnnotationPrivate &dd);
     void store(QDomNode &parentNode, QDomDocument &document) const override; // stub
     Q_DECLARE_PRIVATE(ScreenAnnotation)
     Q_DISABLE_COPY(ScreenAnnotation)
@@ -1100,7 +1100,7 @@ public:
 
 private:
     WidgetAnnotation();
-    WidgetAnnotation(WidgetAnnotationPrivate &dd);
+    explicit WidgetAnnotation(WidgetAnnotationPrivate &dd);
     void store(QDomNode &parentNode, QDomDocument &document) const override; // stub
     Q_DECLARE_PRIVATE(WidgetAnnotation)
     Q_DISABLE_COPY(WidgetAnnotation)
@@ -1427,8 +1427,8 @@ private:
     void setContent(RichMediaAnnotation::Content *content);
 
     RichMediaAnnotation();
-    RichMediaAnnotation(const QDomNode &node);
-    RichMediaAnnotation(RichMediaAnnotationPrivate &dd);
+    explicit RichMediaAnnotation(const QDomNode &node);
+    explicit RichMediaAnnotation(RichMediaAnnotationPrivate &dd);
     void store(QDomNode &parentNode, QDomDocument &document) const override;
     Q_DECLARE_PRIVATE(RichMediaAnnotation)
     Q_DISABLE_COPY(RichMediaAnnotation)
diff --git a/qt5/src/poppler-embeddedfile-private.h b/qt5/src/poppler-embeddedfile-private.h
index 531b4833..5eacf50d 100644
--- a/qt5/src/poppler-embeddedfile-private.h
+++ b/qt5/src/poppler-embeddedfile-private.h
@@ -1,5 +1,5 @@
 /* poppler-embeddedfile-private.h: Qt interface to poppler
- * Copyright (C) 2005, 2008, 2009, 2012, 2018, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2005, 2008, 2009, 2012, 2018, 2021, Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2005, Brad Hards <bradh at frogmouth.net>
  * Copyright (C) 2008, 2011, Pino Toscano <pino at kde.org>
  *
@@ -28,7 +28,7 @@ namespace Poppler {
 class EmbeddedFileData
 {
 public:
-    EmbeddedFileData(FileSpec *fs);
+    explicit EmbeddedFileData(FileSpec *fs);
     ~EmbeddedFileData();
 
     EmbeddedFileData(const EmbeddedFileData &) = delete;
diff --git a/qt5/src/poppler-form.cc b/qt5/src/poppler-form.cc
index c1456b4c..326a59b5 100644
--- a/qt5/src/poppler-form.cc
+++ b/qt5/src/poppler-form.cc
@@ -1,6 +1,6 @@
 /* poppler-form.h: qt interface to poppler
  * Copyright (C) 2007-2008, 2011, Pino Toscano <pino at kde.org>
- * Copyright (C) 2008, 2011, 2012, 2015-2020 Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2008, 2011, 2012, 2015-2021 Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2011 Carlos Garcia Campos <carlosgc at gnome.org>
  * Copyright (C) 2012, Adam Reichold <adamreichold at myopera.com>
  * Copyright (C) 2016, Hanno Meyer-Thurow <h.mth at web.de>
@@ -765,7 +765,7 @@ bool CertificateInfo::checkPassword(const QString &password) const
 class SignatureValidationInfoPrivate
 {
 public:
-    SignatureValidationInfoPrivate(CertificateInfo &&ci) : cert_info(ci) { }
+    explicit SignatureValidationInfoPrivate(CertificateInfo &&ci) : cert_info(ci) { }
 
     SignatureValidationInfo::SignatureStatus signature_status;
     SignatureValidationInfo::CertificateStatus certificate_status;
diff --git a/qt5/src/poppler-form.h b/qt5/src/poppler-form.h
index 05231931..386df7de 100644
--- a/qt5/src/poppler-form.h
+++ b/qt5/src/poppler-form.h
@@ -1,6 +1,6 @@
 /* poppler-form.h: qt interface to poppler
  * Copyright (C) 2007-2008, Pino Toscano <pino at kde.org>
- * Copyright (C) 2008, 2011, 2016, 2017, 2019, 2020, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2008, 2011, 2016, 2017, 2019-2021, Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2012, Adam Reichold <adamreichold at myopera.com>
  * Copyright (C) 2016, Hanno Meyer-Thurow <h.mth at web.de>
  * Copyright (C) 2017, Hans-Ulrich Jüttner <huj at froreich-bioscientia.de>
@@ -71,7 +71,7 @@ class POPPLER_QT5_EXPORT FormFieldIcon
     friend class FormFieldIconData;
 
 public:
-    FormFieldIcon(FormFieldIconData *data);
+    explicit FormFieldIcon(FormFieldIconData *data);
     FormFieldIcon(const FormFieldIcon &ffIcon);
     ~FormFieldIcon();
 
@@ -212,7 +212,7 @@ public:
 
 protected:
     /// \cond PRIVATE
-    FormField(std::unique_ptr<FormFieldData> dd);
+    explicit FormField(std::unique_ptr<FormFieldData> dd);
 
     std::unique_ptr<FormFieldData> m_formData;
     /// \endcond
@@ -532,7 +532,7 @@ public:
     };
 
     CertificateInfo();
-    CertificateInfo(CertificateInfoPrivate *priv);
+    explicit CertificateInfo(CertificateInfoPrivate *priv);
     ~CertificateInfo();
 
     /**
@@ -678,7 +678,7 @@ public:
     };
 
     /// \cond PRIVATE
-    SignatureValidationInfo(SignatureValidationInfoPrivate *priv);
+    explicit SignatureValidationInfo(SignatureValidationInfoPrivate *priv);
     /// \endcond
     ~SignatureValidationInfo();
 
diff --git a/qt5/src/poppler-link-extractor-private.h b/qt5/src/poppler-link-extractor-private.h
index a3cd7f8d..7cad6f85 100644
--- a/qt5/src/poppler-link-extractor-private.h
+++ b/qt5/src/poppler-link-extractor-private.h
@@ -1,5 +1,6 @@
 /* poppler-link-extractor_p.h: qt interface to poppler
  * Copyright (C) 2007, 2008, 2011, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -32,7 +33,7 @@ class PageData;
 class LinkExtractorOutputDev : public OutputDev
 {
 public:
-    LinkExtractorOutputDev(PageData *data);
+    explicit LinkExtractorOutputDev(PageData *data);
     ~LinkExtractorOutputDev() override;
 
     // inherited from OutputDev
diff --git a/qt5/src/poppler-link-private.h b/qt5/src/poppler-link-private.h
index 6a868722..7e6f6b07 100644
--- a/qt5/src/poppler-link-private.h
+++ b/qt5/src/poppler-link-private.h
@@ -1,5 +1,5 @@
 /* poppler-link-private.h: qt interface to poppler
- * Copyright (C) 2016, 2018, 2020 Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2016, 2018, 2020, 2021 Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2018 Intevation GmbH <intevation at intevation.de>
  * Copyright (C) 2020 Oliver Sander <oliver.sander at tu-dresden.de>
  *
@@ -34,7 +34,7 @@ class Link;
 class LinkPrivate
 {
 public:
-    LinkPrivate(const QRectF &area) : linkArea(area) { }
+    explicit LinkPrivate(const QRectF &area) : linkArea(area) { }
 
     virtual ~LinkPrivate();
 
diff --git a/qt5/src/poppler-link.cc b/qt5/src/poppler-link.cc
index a2e0275d..f60ad989 100644
--- a/qt5/src/poppler-link.cc
+++ b/qt5/src/poppler-link.cc
@@ -1,5 +1,5 @@
 /* poppler-link.cc: qt interface to poppler
- * Copyright (C) 2006-2007, 2013, 2016-2020, Albert Astals Cid
+ * Copyright (C) 2006-2007, 2013, 2016-2021, Albert Astals Cid
  * Copyright (C) 2007-2008, Pino Toscano <pino at kde.org>
  * Copyright (C) 2010 Hib Eris <hib at hiberis.nl>
  * Copyright (C) 2012, Tobias Koenig <tokoe at kdab.com>
@@ -94,7 +94,7 @@ LinkGotoPrivate::~LinkGotoPrivate() = default;
 class LinkExecutePrivate : public LinkPrivate
 {
 public:
-    LinkExecutePrivate(const QRectF &area);
+    explicit LinkExecutePrivate(const QRectF &area);
     ~LinkExecutePrivate() override;
 
     QString fileName;
@@ -107,7 +107,7 @@ LinkExecutePrivate::~LinkExecutePrivate() = default;
 class LinkBrowsePrivate : public LinkPrivate
 {
 public:
-    LinkBrowsePrivate(const QRectF &area);
+    explicit LinkBrowsePrivate(const QRectF &area);
     ~LinkBrowsePrivate() override;
 
     QString url;
@@ -119,7 +119,7 @@ LinkBrowsePrivate::~LinkBrowsePrivate() = default;
 class LinkActionPrivate : public LinkPrivate
 {
 public:
-    LinkActionPrivate(const QRectF &area);
+    explicit LinkActionPrivate(const QRectF &area);
     ~LinkActionPrivate() override;
 
     LinkAction::ActionType type;
@@ -131,7 +131,7 @@ LinkActionPrivate::~LinkActionPrivate() = default;
 class LinkSoundPrivate : public LinkPrivate
 {
 public:
-    LinkSoundPrivate(const QRectF &area);
+    explicit LinkSoundPrivate(const QRectF &area);
     ~LinkSoundPrivate() override;
 
     double volume;
@@ -151,7 +151,7 @@ LinkSoundPrivate::~LinkSoundPrivate()
 class LinkRenditionPrivate : public LinkPrivate
 {
 public:
-    LinkRenditionPrivate(const QRectF &area, ::MediaRendition *rendition, ::LinkRendition::RenditionOperation operation, const QString &script, const Ref ref);
+    explicit LinkRenditionPrivate(const QRectF &area, ::MediaRendition *rendition, ::LinkRendition::RenditionOperation operation, const QString &script, const Ref ref);
     ~LinkRenditionPrivate() override;
 
     MediaRendition *rendition;
@@ -190,7 +190,7 @@ LinkRenditionPrivate::~LinkRenditionPrivate()
 class LinkJavaScriptPrivate : public LinkPrivate
 {
 public:
-    LinkJavaScriptPrivate(const QRectF &area);
+    explicit LinkJavaScriptPrivate(const QRectF &area);
     ~LinkJavaScriptPrivate() override;
 
     QString js;
diff --git a/qt5/src/poppler-link.h b/qt5/src/poppler-link.h
index 9f43d3b0..e83e2f8f 100644
--- a/qt5/src/poppler-link.h
+++ b/qt5/src/poppler-link.h
@@ -1,5 +1,5 @@
 /* poppler-link.h: qt interface to poppler
- * Copyright (C) 2006, 2013, 2016, 2018, 2019, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2006, 2013, 2016, 2018, 2019, 2021, Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2007-2008, 2010, Pino Toscano <pino at kde.org>
  * Copyright (C) 2010, 2012, Guillermo Amaral <gamaral at kdab.com>
  * Copyright (C) 2012, Tobias Koenig <tokoe at kdab.com>
@@ -90,8 +90,8 @@ public:
     };
 
     /// \cond PRIVATE
-    LinkDestination(const LinkDestinationData &data);
-    LinkDestination(const QString &description);
+    explicit LinkDestination(const LinkDestinationData &data);
+    explicit LinkDestination(const QString &description);
     /// \endcond
     /**
      * Copy constructor.
@@ -180,7 +180,7 @@ class POPPLER_QT5_EXPORT Link
 {
 public:
     /// \cond PRIVATE
-    Link(const QRectF &linkArea);
+    explicit Link(const QRectF &linkArea);
     /// \endcond
 
     /**
@@ -230,7 +230,7 @@ public:
 
 protected:
     /// \cond PRIVATE
-    Link(LinkPrivate &dd);
+    explicit Link(LinkPrivate &dd);
     Q_DECLARE_PRIVATE(Link)
     LinkPrivate *d_ptr;
     /// \endcond
@@ -633,7 +633,7 @@ public:
     /**
      * Create a new OCGState link. This is only used by Poppler::Page.
      */
-    LinkOCGState(LinkOCGStatePrivate *ocgp);
+    explicit LinkOCGState(LinkOCGStatePrivate *ocgp);
     /**
      * Destructor.
      */
@@ -657,7 +657,7 @@ public:
     /**
      * Create a new Hide link. This is only used by Poppler::Page.
      */
-    LinkHide(LinkHidePrivate *lhidep);
+    explicit LinkHide(LinkHidePrivate *lhidep);
     /**
      * Destructor.
      */
diff --git a/qt5/src/poppler-media.cc b/qt5/src/poppler-media.cc
index b493b8dd..5c804951 100644
--- a/qt5/src/poppler-media.cc
+++ b/qt5/src/poppler-media.cc
@@ -1,6 +1,6 @@
 /* poppler-media.cc: qt interface to poppler
  * Copyright (C) 2012 Guillermo A. Amaral B. <gamaral at kde.org>
- * Copyright (C) 2013, 2018 Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2013, 2018, 2021 Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -32,7 +32,7 @@ namespace Poppler {
 class MediaRenditionPrivate
 {
 public:
-    MediaRenditionPrivate(::MediaRendition *renditionA) : rendition(renditionA) { }
+    explicit MediaRenditionPrivate(::MediaRendition *renditionA) : rendition(renditionA) { }
 
     ~MediaRenditionPrivate() { delete rendition; }
 
diff --git a/qt5/src/poppler-media.h b/qt5/src/poppler-media.h
index 0ccab7df..7d5fe93d 100644
--- a/qt5/src/poppler-media.h
+++ b/qt5/src/poppler-media.h
@@ -1,6 +1,6 @@
 /* poppler-media.h: qt interface to poppler
  * Copyright (C) 2012 Guillermo A. Amaral B. <gamaral at kde.org>
- * Copyright (C) 2012, 2013 Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2012, 2013, 2021 Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -42,7 +42,7 @@ public:
     /**
       Constructs a MediaRendition. Takes ownership of the passed rendition
      */
-    MediaRendition(::MediaRendition *rendition);
+    explicit MediaRendition(::MediaRendition *rendition);
     ~MediaRendition();
 
     /**
diff --git a/qt5/src/poppler-optcontent-private.h b/qt5/src/poppler-optcontent-private.h
index 550a7bcc..589fb0bc 100644
--- a/qt5/src/poppler-optcontent-private.h
+++ b/qt5/src/poppler-optcontent-private.h
@@ -2,7 +2,7 @@
  *
  * Copyright (C) 2007, Brad Hards <bradh at kde.org>
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
- * Copyright (C) 2016, 2018, 2019, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2016, 2018, 2019, 2021, Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2017, Hubert Figuière <hub at figuiere.net>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -59,8 +59,8 @@ public:
         HeadingOnly
     };
 
-    OptContentItem(OptionalContentGroup *group);
-    OptContentItem(const QString &label);
+    explicit OptContentItem(OptionalContentGroup *group);
+    explicit OptContentItem(const QString &label);
     OptContentItem();
     ~OptContentItem();
 
diff --git a/qt5/src/poppler-optcontent.h b/qt5/src/poppler-optcontent.h
index 2fb0424e..a126140e 100644
--- a/qt5/src/poppler-optcontent.h
+++ b/qt5/src/poppler-optcontent.h
@@ -3,7 +3,7 @@
  * Copyright (C) 2007, Brad Hards <bradh at kde.org>
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
  * Copyright (C) 2013, Anthony Granger <grangeranthony at gmail.com>
- * Copyright (C) 2016, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2016, 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -74,7 +74,7 @@ public:
     void applyLink(LinkOCGState *link);
 
 private:
-    OptContentModel(OCGs *optContent, QObject *parent = nullptr);
+    explicit OptContentModel(OCGs *optContent, QObject *parent = nullptr);
 
     friend class OptContentModelPrivate;
     OptContentModelPrivate *d;
diff --git a/qt5/src/poppler-page-transition.cc b/qt5/src/poppler-page-transition.cc
index fbb90a85..3b8d6dab 100644
--- a/qt5/src/poppler-page-transition.cc
+++ b/qt5/src/poppler-page-transition.cc
@@ -1,7 +1,7 @@
 /* PageTransition.cc
  * Copyright (C) 2005, Net Integration Technologies, Inc.
  * Copyright (C) 2015, Arseniy Lartsev <arseniy at alumni.chalmers.se>
- * Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2018, 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -27,7 +27,7 @@ namespace Poppler {
 class PageTransitionData
 {
 public:
-    PageTransitionData(Object *trans) { pt = new ::PageTransition(trans); }
+    explicit PageTransitionData(Object *trans) { pt = new ::PageTransition(trans); }
 
     PageTransitionData(const PageTransitionData &ptd) { pt = new ::PageTransition(*ptd.pt); }
 
diff --git a/qt5/src/poppler-page-transition.h b/qt5/src/poppler-page-transition.h
index 9e34fdaa..15db5e83 100644
--- a/qt5/src/poppler-page-transition.h
+++ b/qt5/src/poppler-page-transition.h
@@ -2,7 +2,7 @@
  * Copyright (C) 2005, Net Integration Technologies, Inc.
  * Copyright (C) 2005, Brad Hards <bradh at frogmouth.net>
  * Copyright (C) 2015, Arseniy Lartsev <arseniy at alumni.chalmers.se>
- * Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2018, 2021 Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -100,7 +100,7 @@ public:
      constructor, and may be deleted after the constructor returns.
     */
     // TODO Next ABI break, make this private and remove reference
-    PageTransition(const PageTransitionParams &params);
+    explicit PageTransition(const PageTransitionParams &params);
 
     /** \brief copy constructor */
     PageTransition(const PageTransition &pt);
diff --git a/qt5/src/poppler-private.h b/qt5/src/poppler-private.h
index d8342a46..30e1373f 100644
--- a/qt5/src/poppler-private.h
+++ b/qt5/src/poppler-private.h
@@ -1,7 +1,7 @@
 /* poppler-private.h: qt interface to poppler
  * Copyright (C) 2005, Net Integration Technologies, Inc.
  * Copyright (C) 2005, 2008, Brad Hards <bradh at frogmouth.net>
- * Copyright (C) 2006-2009, 2011, 2012, 2017-2020 by Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2006-2009, 2011, 2012, 2017-2021 by Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2007-2009, 2011, 2014 by Pino Toscano <pino at kde.org>
  * Copyright (C) 2011 Andreas Hartmetz <ahartmetz at gmail.com>
  * Copyright (C) 2011 Hib Eris <hib at hiberis.nl>
@@ -199,7 +199,7 @@ public:
         type = FontInfo::unknown;
     }
 
-    FontInfoData(::FontInfo *fi)
+    explicit FontInfoData(::FontInfo *fi)
     {
         if (fi->getName())
             fontName = fi->getName()->c_str();
diff --git a/qt5/src/poppler-qiodeviceoutstream-private.h b/qt5/src/poppler-qiodeviceoutstream-private.h
index 5cb0b012..b1b5101a 100644
--- a/qt5/src/poppler-qiodeviceoutstream-private.h
+++ b/qt5/src/poppler-qiodeviceoutstream-private.h
@@ -1,6 +1,7 @@
 /* poppler-qiodevicestream-private.h: Qt5 interface to poppler
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
  * Copyright (C) 2013 Adrian Johnson <ajohnson at redneon.com>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -30,7 +31,7 @@ namespace Poppler {
 class QIODeviceOutStream : public OutStream
 {
 public:
-    QIODeviceOutStream(QIODevice *device);
+    explicit QIODeviceOutStream(QIODevice *device);
     ~QIODeviceOutStream() override;
 
     void close() override;
diff --git a/qt5/src/poppler-qt5.h b/qt5/src/poppler-qt5.h
index dacda011..adc97ca1 100644
--- a/qt5/src/poppler-qt5.h
+++ b/qt5/src/poppler-qt5.h
@@ -206,7 +206,7 @@ public:
     /**
        Create a new font information container.
     */
-    FontInfo(const FontInfoData &fid);
+    explicit FontInfo(const FontInfoData &fid);
     /// \endcond
 
     /**
@@ -345,7 +345,7 @@ class POPPLER_QT5_EXPORT EmbeddedFile
 
 public:
     /// \cond PRIVATE
-    EmbeddedFile(EmbFile *embfile);
+    explicit EmbeddedFile(EmbFile *embfile);
     /// \endcond
 
     /**
@@ -415,7 +415,7 @@ public:
 
 private:
     Q_DISABLE_COPY(EmbeddedFile)
-    EmbeddedFile(EmbeddedFileData &dd);
+    explicit EmbeddedFile(EmbeddedFileData &dd);
 
     EmbeddedFileData *m_embeddedFile;
 };
@@ -1084,7 +1084,7 @@ public:
     QVector<OutlineItem> children() const;
 
 private:
-    OutlineItem(OutlineItemData *data);
+    explicit OutlineItem(OutlineItemData *data);
     OutlineItemData *m_data;
 };
 
@@ -1939,7 +1939,7 @@ private:
 
     DocumentData *m_doc;
 
-    Document(DocumentData *dataA);
+    explicit Document(DocumentData *dataA);
 };
 
 class BaseConverterPrivate;
@@ -1995,7 +1995,7 @@ public:
 
 protected:
     /// \cond PRIVATE
-    BaseConverter(BaseConverterPrivate &dd);
+    explicit BaseConverter(BaseConverterPrivate &dd);
     Q_DECLARE_PRIVATE(BaseConverter)
     BaseConverterPrivate *d_ptr;
     /// \endcond
@@ -2141,7 +2141,7 @@ private:
     Q_DECLARE_PRIVATE(PSConverter)
     Q_DISABLE_COPY(PSConverter)
 
-    PSConverter(DocumentData *document);
+    explicit PSConverter(DocumentData *document);
 };
 
 /**
@@ -2292,7 +2292,7 @@ private:
     Q_DECLARE_PRIVATE(PDFConverter)
     Q_DISABLE_COPY(PDFConverter)
 
-    PDFConverter(DocumentData *document);
+    explicit PDFConverter(DocumentData *document);
 };
 
 /**
@@ -2355,7 +2355,7 @@ public:
     };
 
     /// \cond PRIVATE
-    SoundObject(Sound *popplersound);
+    explicit SoundObject(Sound *popplersound);
     /// \endcond
 
     ~SoundObject();
@@ -2466,7 +2466,7 @@ public:
 
 private:
     /// \cond PRIVATE
-    MovieObject(AnnotMovie *ann);
+    explicit MovieObject(AnnotMovie *ann);
     /// \endcond
 
     Q_DISABLE_COPY(MovieObject)
diff --git a/qt5/tests/check_actualtext.cpp b/qt5/tests/check_actualtext.cpp
index a32b43e2..709bb3b5 100644
--- a/qt5/tests/check_actualtext.cpp
+++ b/qt5/tests/check_actualtext.cpp
@@ -8,7 +8,7 @@ class TestActualText : public QObject
 {
     Q_OBJECT
 public:
-    TestActualText(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestActualText(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkActualText1();
     void checkActualText2();
diff --git a/qt5/tests/check_annotations.cpp b/qt5/tests/check_annotations.cpp
index 266b8d57..668a8e3f 100644
--- a/qt5/tests/check_annotations.cpp
+++ b/qt5/tests/check_annotations.cpp
@@ -15,7 +15,7 @@ class TestAnnotations : public QObject
 {
     Q_OBJECT
 public:
-    TestAnnotations(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestAnnotations(QObject *parent = nullptr) : QObject(parent) { }
 
     void saveAndCheck(const std::unique_ptr<Poppler::Document> &doc, const std::function<void(Poppler::Annotation *a)> &checkFunction);
 
diff --git a/qt5/tests/check_attachments.cpp b/qt5/tests/check_attachments.cpp
index 753cf318..8e250dfa 100644
--- a/qt5/tests/check_attachments.cpp
+++ b/qt5/tests/check_attachments.cpp
@@ -8,7 +8,7 @@ class TestAttachments : public QObject
 {
     Q_OBJECT
 public:
-    TestAttachments(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestAttachments(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkNoAttachments();
     void checkAttach1();
diff --git a/qt5/tests/check_dateConversion.cpp b/qt5/tests/check_dateConversion.cpp
index f5d3a357..acbd4b87 100644
--- a/qt5/tests/check_dateConversion.cpp
+++ b/qt5/tests/check_dateConversion.cpp
@@ -9,7 +9,7 @@ class TestDateConv : public QObject
 {
     Q_OBJECT
 public:
-    TestDateConv(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestDateConv(QObject *parent = nullptr) : QObject(parent) { }
 
 private slots:
     void initTestCase();
diff --git a/qt5/tests/check_fonts.cpp b/qt5/tests/check_fonts.cpp
index 59d41984..ef90482d 100644
--- a/qt5/tests/check_fonts.cpp
+++ b/qt5/tests/check_fonts.cpp
@@ -8,7 +8,7 @@ class TestFontsData : public QObject
 {
     Q_OBJECT
 public:
-    TestFontsData(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestFontsData(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkNoFonts();
     void checkType1();
diff --git a/qt5/tests/check_forms.cpp b/qt5/tests/check_forms.cpp
index a4379978..ab764692 100644
--- a/qt5/tests/check_forms.cpp
+++ b/qt5/tests/check_forms.cpp
@@ -9,7 +9,7 @@ class TestForms : public QObject
 {
     Q_OBJECT
 public:
-    TestForms(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestForms(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void testCheckbox(); // Test for issue #655
     void testCheckboxIssue159(); // Test for issue #159
@@ -172,7 +172,7 @@ void TestForms::testSetIcon()
     }
 
     // Just making sure that setting a invalid icon will still produce a valid icon.
-    anmButton->setIcon(nullptr);
+    anmButton->setIcon(Poppler::FormFieldIcon(nullptr));
     Poppler::FormFieldIcon anmIcon = anmButton->icon();
 
     QVERIFY(Poppler::FormFieldIconData::getData(anmIcon));
diff --git a/qt5/tests/check_goostring.cpp b/qt5/tests/check_goostring.cpp
index 626e7774..4a07cc6d 100644
--- a/qt5/tests/check_goostring.cpp
+++ b/qt5/tests/check_goostring.cpp
@@ -7,7 +7,7 @@ class TestGooString : public QObject
 {
     Q_OBJECT
 public:
-    TestGooString(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestGooString(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void testInsertData_data();
     void testInsertData();
diff --git a/qt5/tests/check_internal_outline.cpp b/qt5/tests/check_internal_outline.cpp
index 0119d909..02342de5 100644
--- a/qt5/tests/check_internal_outline.cpp
+++ b/qt5/tests/check_internal_outline.cpp
@@ -8,7 +8,7 @@ class TestInternalOutline : public QObject
 {
     Q_OBJECT
 public:
-    TestInternalOutline(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestInternalOutline(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void testCreateOutline();
     void testSetOutline();
diff --git a/qt5/tests/check_lexer.cpp b/qt5/tests/check_lexer.cpp
index f0b5e134..9c60962a 100644
--- a/qt5/tests/check_lexer.cpp
+++ b/qt5/tests/check_lexer.cpp
@@ -7,7 +7,7 @@ class TestLexer : public QObject
 {
     Q_OBJECT
 public:
-    TestLexer(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestLexer(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void testNumbers();
 };
diff --git a/qt5/tests/check_links.cpp b/qt5/tests/check_links.cpp
index 86b40713..31469014 100644
--- a/qt5/tests/check_links.cpp
+++ b/qt5/tests/check_links.cpp
@@ -8,7 +8,7 @@ class TestLinks : public QObject
 {
     Q_OBJECT
 public:
-    TestLinks(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestLinks(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkDocumentWithNoDests();
     void checkDests_xr01();
diff --git a/qt5/tests/check_metadata.cpp b/qt5/tests/check_metadata.cpp
index 90ebba04..8c87e419 100644
--- a/qt5/tests/check_metadata.cpp
+++ b/qt5/tests/check_metadata.cpp
@@ -6,7 +6,7 @@ class TestMetaData : public QObject
 {
     Q_OBJECT
 public:
-    TestMetaData(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestMetaData(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkStrings_data();
     void checkStrings();
diff --git a/qt5/tests/check_object.cpp b/qt5/tests/check_object.cpp
index e3bc0ee5..08a7f750 100644
--- a/qt5/tests/check_object.cpp
+++ b/qt5/tests/check_object.cpp
@@ -7,7 +7,7 @@ class TestObject : public QObject
 {
     Q_OBJECT
 public:
-    TestObject(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestObject(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void benchDefaultConstructor();
     void benchMoveConstructor();
diff --git a/qt5/tests/check_optcontent.cpp b/qt5/tests/check_optcontent.cpp
index e3cf4e79..bb267e92 100644
--- a/qt5/tests/check_optcontent.cpp
+++ b/qt5/tests/check_optcontent.cpp
@@ -10,7 +10,7 @@ class TestOptionalContent : public QObject
 {
     Q_OBJECT
 public:
-    TestOptionalContent(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestOptionalContent(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkVisPolicy();
     void checkNestedLayers();
diff --git a/qt5/tests/check_outline.cpp b/qt5/tests/check_outline.cpp
index 3d9371a4..bc12bc93 100644
--- a/qt5/tests/check_outline.cpp
+++ b/qt5/tests/check_outline.cpp
@@ -8,7 +8,7 @@ class TestOutline : public QObject
 {
     Q_OBJECT
 public:
-    TestOutline(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestOutline(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkOutline_xr02();
 };
diff --git a/qt5/tests/check_pagelabelinfo.cpp b/qt5/tests/check_pagelabelinfo.cpp
index 520a5f9b..a8e0f9ef 100644
--- a/qt5/tests/check_pagelabelinfo.cpp
+++ b/qt5/tests/check_pagelabelinfo.cpp
@@ -10,7 +10,7 @@ class TestPageLabelInfo : public QObject
 {
     Q_OBJECT
 public:
-    TestPageLabelInfo(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestPageLabelInfo(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void testFromDecimal();
     void testFromDecimalUnicode();
diff --git a/qt5/tests/check_pagelayout.cpp b/qt5/tests/check_pagelayout.cpp
index e8546b46..20c2f0f2 100644
--- a/qt5/tests/check_pagelayout.cpp
+++ b/qt5/tests/check_pagelayout.cpp
@@ -6,7 +6,7 @@ class TestPageLayout : public QObject
 {
     Q_OBJECT
 public:
-    TestPageLayout(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestPageLayout(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkNone();
     void checkSingle();
diff --git a/qt5/tests/check_pagemode.cpp b/qt5/tests/check_pagemode.cpp
index 52bfa751..9a0b5e93 100644
--- a/qt5/tests/check_pagemode.cpp
+++ b/qt5/tests/check_pagemode.cpp
@@ -6,7 +6,7 @@ class TestPageMode : public QObject
 {
     Q_OBJECT
 public:
-    TestPageMode(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestPageMode(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkNone();
     void checkFullScreen();
diff --git a/qt5/tests/check_password.cpp b/qt5/tests/check_password.cpp
index bcb823a7..94e19b17 100644
--- a/qt5/tests/check_password.cpp
+++ b/qt5/tests/check_password.cpp
@@ -6,7 +6,7 @@ class TestPassword : public QObject
 {
     Q_OBJECT
 public:
-    TestPassword(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestPassword(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void password1();
     void password1a();
diff --git a/qt5/tests/check_permissions.cpp b/qt5/tests/check_permissions.cpp
index fd962aef..ceaf4d66 100644
--- a/qt5/tests/check_permissions.cpp
+++ b/qt5/tests/check_permissions.cpp
@@ -6,7 +6,7 @@ class TestPermissions : public QObject
 {
     Q_OBJECT
 public:
-    TestPermissions(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestPermissions(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void permissions1();
 };
diff --git a/qt5/tests/check_search.cpp b/qt5/tests/check_search.cpp
index 7b379ad0..cf57c133 100644
--- a/qt5/tests/check_search.cpp
+++ b/qt5/tests/check_search.cpp
@@ -8,7 +8,7 @@ class TestSearch : public QObject
 {
     Q_OBJECT
 public:
-    TestSearch(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestSearch(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void testAcrossLinesSearch(); // leave it first
     void bug7063();
diff --git a/qt5/tests/check_strings.cpp b/qt5/tests/check_strings.cpp
index 14d22740..5772fd8a 100644
--- a/qt5/tests/check_strings.cpp
+++ b/qt5/tests/check_strings.cpp
@@ -32,7 +32,7 @@ class TestStrings : public QObject
     Q_OBJECT
 
 public:
-    TestStrings(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestStrings(QObject *parent = nullptr) : QObject(parent) { }
 
 private slots:
     void initTestCase();
diff --git a/qt5/tests/check_stroke_opacity.cpp b/qt5/tests/check_stroke_opacity.cpp
index 63ecaa6e..8357f626 100644
--- a/qt5/tests/check_stroke_opacity.cpp
+++ b/qt5/tests/check_stroke_opacity.cpp
@@ -11,7 +11,7 @@ class TestStrokeOpacity : public QObject
 {
     Q_OBJECT
 public:
-    TestStrokeOpacity(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestStrokeOpacity(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkStrokeOpacity_data();
     void checkStrokeOpacity();
diff --git a/qt5/tests/check_utf_conversion.cpp b/qt5/tests/check_utf_conversion.cpp
index 8d479b70..9acf4ab9 100644
--- a/qt5/tests/check_utf_conversion.cpp
+++ b/qt5/tests/check_utf_conversion.cpp
@@ -14,7 +14,7 @@ class TestUTFConversion : public QObject
 {
     Q_OBJECT
 public:
-    TestUTFConversion(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestUTFConversion(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void testUTF_data();
     void testUTF();
diff --git a/qt5/tests/stress-threads-qt5.cpp b/qt5/tests/stress-threads-qt5.cpp
index e600b28c..164127bc 100644
--- a/qt5/tests/stress-threads-qt5.cpp
+++ b/qt5/tests/stress-threads-qt5.cpp
@@ -20,7 +20,7 @@ class SillyThread : public QThread
 {
     Q_OBJECT
 public:
-    SillyThread(Poppler::Document *document, QObject *parent = nullptr);
+    explicit SillyThread(Poppler::Document *document, QObject *parent = nullptr);
 
     void run() override;
 
diff --git a/qt5/tests/test-password-qt5.cpp b/qt5/tests/test-password-qt5.cpp
index 530b3ac2..05b697d2 100644
--- a/qt5/tests/test-password-qt5.cpp
+++ b/qt5/tests/test-password-qt5.cpp
@@ -11,7 +11,7 @@ class PDFDisplay : public QWidget // picture display widget
 {
     Q_OBJECT
 public:
-    PDFDisplay(Poppler::Document *d, QWidget *parent = nullptr);
+    explicit PDFDisplay(Poppler::Document *d, QWidget *parent = nullptr);
     ~PDFDisplay() override;
 
 protected:
diff --git a/qt6/demos/abstractinfodock.h b/qt6/demos/abstractinfodock.h
index 557fca7e..9dd2576f 100644
--- a/qt6/demos/abstractinfodock.h
+++ b/qt6/demos/abstractinfodock.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,7 +29,7 @@ class AbstractInfoDock : public QDockWidget, public DocumentObserver
     Q_OBJECT
 
 public:
-    AbstractInfoDock(QWidget *parent = nullptr);
+    explicit AbstractInfoDock(QWidget *parent = nullptr);
     ~AbstractInfoDock() override;
 
     void documentLoaded() override;
diff --git a/qt6/demos/embeddedfiles.h b/qt6/demos/embeddedfiles.h
index 7ddb6b1e..e4a40403 100644
--- a/qt6/demos/embeddedfiles.h
+++ b/qt6/demos/embeddedfiles.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,7 +29,7 @@ class EmbeddedFilesDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    EmbeddedFilesDock(QWidget *parent = nullptr);
+    explicit EmbeddedFilesDock(QWidget *parent = nullptr);
     ~EmbeddedFilesDock() override;
 
     void documentLoaded() override;
diff --git a/qt6/demos/fonts.h b/qt6/demos/fonts.h
index e056e01b..e8fed63f 100644
--- a/qt6/demos/fonts.h
+++ b/qt6/demos/fonts.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,7 +29,7 @@ class FontsDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    FontsDock(QWidget *parent = nullptr);
+    explicit FontsDock(QWidget *parent = nullptr);
     ~FontsDock() override;
 
     void documentClosed() override;
diff --git a/qt6/demos/info.h b/qt6/demos/info.h
index d964a9f4..0bbcf75d 100644
--- a/qt6/demos/info.h
+++ b/qt6/demos/info.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,7 +29,7 @@ class InfoDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    InfoDock(QWidget *parent = nullptr);
+    explicit InfoDock(QWidget *parent = nullptr);
     ~InfoDock() override;
 
     void documentClosed() override;
diff --git a/qt6/demos/metadata.h b/qt6/demos/metadata.h
index f5dc391d..0d58e840 100644
--- a/qt6/demos/metadata.h
+++ b/qt6/demos/metadata.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,7 +29,7 @@ class MetadataDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    MetadataDock(QWidget *parent = nullptr);
+    explicit MetadataDock(QWidget *parent = nullptr);
     ~MetadataDock() override;
 
     void documentClosed() override;
diff --git a/qt6/demos/navigationtoolbar.h b/qt6/demos/navigationtoolbar.h
index 7ca73015..ffec8f4d 100644
--- a/qt6/demos/navigationtoolbar.h
+++ b/qt6/demos/navigationtoolbar.h
@@ -1,7 +1,7 @@
 /*
  * Copyright (C) 2008-2009, Pino Toscano <pino at kde.org>
  * Copyright (C) 2013, Fabio D'Urso <fabiodurso at hotmail.it>
- * Copyright (C) 2019, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2019, 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -33,7 +33,7 @@ class NavigationToolBar : public QToolBar, public DocumentObserver
     Q_OBJECT
 
 public:
-    NavigationToolBar(QWidget *parent = nullptr);
+    explicit NavigationToolBar(QWidget *parent = nullptr);
     ~NavigationToolBar() override;
 
     void documentLoaded() override;
diff --git a/qt6/demos/optcontent.h b/qt6/demos/optcontent.h
index 7764a42b..9da451be 100644
--- a/qt6/demos/optcontent.h
+++ b/qt6/demos/optcontent.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,7 +29,7 @@ class OptContentDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    OptContentDock(QWidget *parent = nullptr);
+    explicit OptContentDock(QWidget *parent = nullptr);
     ~OptContentDock() override;
 
     void documentLoaded() override;
diff --git a/qt6/demos/pageview.h b/qt6/demos/pageview.h
index 9149ec0d..c7446d43 100644
--- a/qt6/demos/pageview.h
+++ b/qt6/demos/pageview.h
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) 2008-2009, Pino Toscano <pino at kde.org>
  * Copyright (C) 2013, Fabio D'Urso <fabiodurso at hotmail.it>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -31,7 +32,7 @@ class PageView : public QScrollArea, public DocumentObserver
     Q_OBJECT
 
 public:
-    PageView(QWidget *parent = nullptr);
+    explicit PageView(QWidget *parent = nullptr);
     ~PageView() override;
 
     void documentLoaded() override;
diff --git a/qt6/demos/permissions.h b/qt6/demos/permissions.h
index 9c5072b8..06293ccc 100644
--- a/qt6/demos/permissions.h
+++ b/qt6/demos/permissions.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008-2009, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -28,7 +29,7 @@ class PermissionsDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    PermissionsDock(QWidget *parent = nullptr);
+    explicit PermissionsDock(QWidget *parent = nullptr);
     ~PermissionsDock() override;
 
     void documentClosed() override;
diff --git a/qt6/demos/thumbnails.h b/qt6/demos/thumbnails.h
index 3eda6cf7..a568df65 100644
--- a/qt6/demos/thumbnails.h
+++ b/qt6/demos/thumbnails.h
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) 2009, Shawn Rutledge <shawn.t.rutledge at gmail.com>
  * Copyright (C) 2009, Pino Toscano <pino at kde.org>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -30,7 +31,7 @@ class ThumbnailsDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    ThumbnailsDock(QWidget *parent = nullptr);
+    explicit ThumbnailsDock(QWidget *parent = nullptr);
     ~ThumbnailsDock() override;
 
     void documentClosed() override;
diff --git a/qt6/demos/toc.h b/qt6/demos/toc.h
index b6c77ba7..fa5ec591 100644
--- a/qt6/demos/toc.h
+++ b/qt6/demos/toc.h
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
- * Copyright (C) 2019, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2019, 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -29,7 +29,7 @@ class TocDock : public AbstractInfoDock
     Q_OBJECT
 
 public:
-    TocDock(QWidget *parent = nullptr);
+    explicit TocDock(QWidget *parent = nullptr);
     ~TocDock() override;
 
     void documentClosed() override;
diff --git a/qt6/demos/viewer.h b/qt6/demos/viewer.h
index a3492f31..bb1a990e 100644
--- a/qt6/demos/viewer.h
+++ b/qt6/demos/viewer.h
@@ -2,6 +2,7 @@
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
  * Copyright (C) 2021, Mahmoud Khalil <mahmoudkhalil11 at gmail.com>
  * Copyright (C) 2021, Oliver Sander <oliver.sander at tu-dresden.de>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -38,7 +39,7 @@ class PdfViewer : public QMainWindow
     friend class DocumentObserver;
 
 public:
-    PdfViewer(QWidget *parent = nullptr);
+    explicit PdfViewer(QWidget *parent = nullptr);
     ~PdfViewer() override;
 
     QSize sizeHint() const override;
diff --git a/qt6/src/QPainterOutputDev.h b/qt6/src/QPainterOutputDev.h
index d15579be..3c133d64 100644
--- a/qt6/src/QPainterOutputDev.h
+++ b/qt6/src/QPainterOutputDev.h
@@ -14,7 +14,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2005 Brad Hards <bradh at frogmouth.net>
-// Copyright (C) 2005, 2018, 2019 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2018, 2019, 2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2009, 2011 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2010 Pino Toscano <pino at kde.org>
 // Copyright (C) 2011 Andreas Hartmetz <ahartmetz at gmail.com>
@@ -57,7 +57,7 @@ class QPainterOutputDev : public OutputDev
 {
 public:
     // Constructor.
-    QPainterOutputDev(QPainter *painter);
+    explicit QPainterOutputDev(QPainter *painter);
 
     // Destructor.
     ~QPainterOutputDev() override;
diff --git a/qt6/src/poppler-annotation.h b/qt6/src/poppler-annotation.h
index 6497ce27..eceb234f 100644
--- a/qt6/src/poppler-annotation.h
+++ b/qt6/src/poppler-annotation.h
@@ -1,5 +1,5 @@
 /* poppler-annotation.h: qt interface to poppler
- * Copyright (C) 2006-2008, 2012, 2013, 2018-2020 Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2006-2008, 2012, 2013, 2018-2021 Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2006, 2008 Pino Toscano <pino at kde.org>
  * Copyright (C) 2007, Brad Hards <bradh at frogmouth.net>
  * Copyright (C) 2010, Philip Lorenz <lorenzph+freedesktop at gmail.com>
@@ -404,7 +404,7 @@ public:
 
 protected:
     /// \cond PRIVATE
-    Annotation(AnnotationPrivate &dd);
+    explicit Annotation(AnnotationPrivate &dd);
     Q_DECLARE_PRIVATE(Annotation)
     QExplicitlySharedDataPointer<AnnotationPrivate> d_ptr;
     /// \endcond
@@ -443,7 +443,7 @@ public:
         InplaceAlignRight
     };
 
-    TextAnnotation(TextType type);
+    explicit TextAnnotation(TextType type);
     ~TextAnnotation() override;
     SubType subType() const override;
 
@@ -489,7 +489,7 @@ public:
     void setInplaceIntent(InplaceIntent intent);
 
 private:
-    TextAnnotation(TextAnnotationPrivate &dd);
+    explicit TextAnnotation(TextAnnotationPrivate &dd);
     void setTextType(TextType type);
     Q_DECLARE_PRIVATE(TextAnnotation)
     Q_DISABLE_COPY(TextAnnotation)
@@ -532,7 +532,7 @@ public:
         PolygonCloud
     };
 
-    LineAnnotation(LineType type);
+    explicit LineAnnotation(LineType type);
     ~LineAnnotation() override;
     SubType subType() const override;
 
@@ -566,7 +566,7 @@ public:
     void setLineIntent(LineIntent intent);
 
 private:
-    LineAnnotation(LineAnnotationPrivate &dd);
+    explicit LineAnnotation(LineAnnotationPrivate &dd);
     void setLineType(LineType type);
     Q_DECLARE_PRIVATE(LineAnnotation)
     Q_DISABLE_COPY(LineAnnotation)
@@ -601,7 +601,7 @@ public:
     void setGeomInnerColor(const QColor &color);
 
 private:
-    GeomAnnotation(GeomAnnotationPrivate &dd);
+    explicit GeomAnnotation(GeomAnnotationPrivate &dd);
     Q_DECLARE_PRIVATE(GeomAnnotation)
     Q_DISABLE_COPY(GeomAnnotation)
 };
@@ -667,7 +667,7 @@ public:
     void setHighlightQuads(const QList<Quad> &quads);
 
 private:
-    HighlightAnnotation(HighlightAnnotationPrivate &dd);
+    explicit HighlightAnnotation(HighlightAnnotationPrivate &dd);
     Q_DECLARE_PRIVATE(HighlightAnnotation)
     Q_DISABLE_COPY(HighlightAnnotation)
 };
@@ -715,7 +715,7 @@ public:
     void setStampIconName(const QString &name);
 
 private:
-    StampAnnotation(StampAnnotationPrivate &dd);
+    explicit StampAnnotation(StampAnnotationPrivate &dd);
     Q_DECLARE_PRIVATE(StampAnnotation)
     Q_DISABLE_COPY(StampAnnotation)
 };
@@ -738,7 +738,7 @@ public:
     void setInkPaths(const QList<QVector<QPointF>> &paths);
 
 private:
-    InkAnnotation(InkAnnotationPrivate &dd);
+    explicit InkAnnotation(InkAnnotationPrivate &dd);
     Q_DECLARE_PRIVATE(InkAnnotation)
     Q_DISABLE_COPY(InkAnnotation)
 };
@@ -771,7 +771,7 @@ public:
 
 private:
     LinkAnnotation();
-    LinkAnnotation(LinkAnnotationPrivate &dd);
+    explicit LinkAnnotation(LinkAnnotationPrivate &dd);
     Q_DECLARE_PRIVATE(LinkAnnotation)
     Q_DISABLE_COPY(LinkAnnotation)
 };
@@ -803,7 +803,7 @@ public:
     void setCaretSymbol(CaretSymbol symbol);
 
 private:
-    CaretAnnotation(CaretAnnotationPrivate &dd);
+    explicit CaretAnnotation(CaretAnnotationPrivate &dd);
     Q_DECLARE_PRIVATE(CaretAnnotation)
     Q_DISABLE_COPY(CaretAnnotation)
 };
@@ -843,7 +843,7 @@ public:
 
 private:
     FileAttachmentAnnotation();
-    FileAttachmentAnnotation(FileAttachmentAnnotationPrivate &dd);
+    explicit FileAttachmentAnnotation(FileAttachmentAnnotationPrivate &dd);
     Q_DECLARE_PRIVATE(FileAttachmentAnnotation)
     Q_DISABLE_COPY(FileAttachmentAnnotation)
 };
@@ -883,7 +883,7 @@ public:
 
 private:
     SoundAnnotation();
-    SoundAnnotation(SoundAnnotationPrivate &dd);
+    explicit SoundAnnotation(SoundAnnotationPrivate &dd);
     Q_DECLARE_PRIVATE(SoundAnnotation)
     Q_DISABLE_COPY(SoundAnnotation)
 };
@@ -923,7 +923,7 @@ public:
 
 private:
     MovieAnnotation();
-    MovieAnnotation(MovieAnnotationPrivate &dd);
+    explicit MovieAnnotation(MovieAnnotationPrivate &dd);
     Q_DECLARE_PRIVATE(MovieAnnotation)
     Q_DISABLE_COPY(MovieAnnotation)
 };
@@ -972,7 +972,7 @@ public:
 
 private:
     ScreenAnnotation();
-    ScreenAnnotation(ScreenAnnotationPrivate &dd);
+    explicit ScreenAnnotation(ScreenAnnotationPrivate &dd);
     Q_DECLARE_PRIVATE(ScreenAnnotation)
     Q_DISABLE_COPY(ScreenAnnotation)
 };
@@ -1002,7 +1002,7 @@ public:
 
 private:
     WidgetAnnotation();
-    WidgetAnnotation(WidgetAnnotationPrivate &dd);
+    explicit WidgetAnnotation(WidgetAnnotationPrivate &dd);
     Q_DECLARE_PRIVATE(WidgetAnnotation)
     Q_DISABLE_COPY(WidgetAnnotation)
 };
@@ -1326,7 +1326,7 @@ private:
     void setContent(RichMediaAnnotation::Content *content);
 
     RichMediaAnnotation();
-    RichMediaAnnotation(RichMediaAnnotationPrivate &dd);
+    explicit RichMediaAnnotation(RichMediaAnnotationPrivate &dd);
     Q_DECLARE_PRIVATE(RichMediaAnnotation)
     Q_DISABLE_COPY(RichMediaAnnotation)
 };
diff --git a/qt6/src/poppler-embeddedfile-private.h b/qt6/src/poppler-embeddedfile-private.h
index 531b4833..5eacf50d 100644
--- a/qt6/src/poppler-embeddedfile-private.h
+++ b/qt6/src/poppler-embeddedfile-private.h
@@ -1,5 +1,5 @@
 /* poppler-embeddedfile-private.h: Qt interface to poppler
- * Copyright (C) 2005, 2008, 2009, 2012, 2018, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2005, 2008, 2009, 2012, 2018, 2021, Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2005, Brad Hards <bradh at frogmouth.net>
  * Copyright (C) 2008, 2011, Pino Toscano <pino at kde.org>
  *
@@ -28,7 +28,7 @@ namespace Poppler {
 class EmbeddedFileData
 {
 public:
-    EmbeddedFileData(FileSpec *fs);
+    explicit EmbeddedFileData(FileSpec *fs);
     ~EmbeddedFileData();
 
     EmbeddedFileData(const EmbeddedFileData &) = delete;
diff --git a/qt6/src/poppler-form.cc b/qt6/src/poppler-form.cc
index b4ebee41..58e84110 100644
--- a/qt6/src/poppler-form.cc
+++ b/qt6/src/poppler-form.cc
@@ -1,6 +1,6 @@
 /* poppler-form.h: qt interface to poppler
  * Copyright (C) 2007-2008, 2011, Pino Toscano <pino at kde.org>
- * Copyright (C) 2008, 2011, 2012, 2015-2020 Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2008, 2011, 2012, 2015-2021 Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2011 Carlos Garcia Campos <carlosgc at gnome.org>
  * Copyright (C) 2012, Adam Reichold <adamreichold at myopera.com>
  * Copyright (C) 2016, Hanno Meyer-Thurow <h.mth at web.de>
@@ -765,7 +765,7 @@ bool CertificateInfo::checkPassword(const QString &password) const
 class SignatureValidationInfoPrivate
 {
 public:
-    SignatureValidationInfoPrivate(CertificateInfo &&ci) : cert_info(ci) { }
+    explicit SignatureValidationInfoPrivate(CertificateInfo &&ci) : cert_info(ci) { }
 
     SignatureValidationInfo::SignatureStatus signature_status;
     SignatureValidationInfo::CertificateStatus certificate_status;
diff --git a/qt6/src/poppler-form.h b/qt6/src/poppler-form.h
index 468689e6..9704f847 100644
--- a/qt6/src/poppler-form.h
+++ b/qt6/src/poppler-form.h
@@ -1,6 +1,6 @@
 /* poppler-form.h: qt interface to poppler
  * Copyright (C) 2007-2008, Pino Toscano <pino at kde.org>
- * Copyright (C) 2008, 2011, 2016, 2017, 2019, 2020, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2008, 2011, 2016, 2017, 2019-2021, Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2012, Adam Reichold <adamreichold at myopera.com>
  * Copyright (C) 2016, Hanno Meyer-Thurow <h.mth at web.de>
  * Copyright (C) 2017, Hans-Ulrich Jüttner <huj at froreich-bioscientia.de>
@@ -69,7 +69,7 @@ class POPPLER_QT6_EXPORT FormFieldIcon
     friend class FormFieldIconData;
 
 public:
-    FormFieldIcon(FormFieldIconData *data);
+    explicit FormFieldIcon(FormFieldIconData *data);
     FormFieldIcon(const FormFieldIcon &ffIcon);
     ~FormFieldIcon();
 
@@ -196,7 +196,7 @@ public:
 
 protected:
     /// \cond PRIVATE
-    FormField(std::unique_ptr<FormFieldData> dd);
+    explicit FormField(std::unique_ptr<FormFieldData> dd);
 
     std::unique_ptr<FormFieldData> m_formData;
     /// \endcond
@@ -498,7 +498,7 @@ public:
     };
 
     CertificateInfo();
-    CertificateInfo(CertificateInfoPrivate *priv);
+    explicit CertificateInfo(CertificateInfoPrivate *priv);
     ~CertificateInfo();
 
     /**
@@ -641,7 +641,7 @@ public:
     };
 
     /// \cond PRIVATE
-    SignatureValidationInfo(SignatureValidationInfoPrivate *priv);
+    explicit SignatureValidationInfo(SignatureValidationInfoPrivate *priv);
     /// \endcond
     ~SignatureValidationInfo();
 
diff --git a/qt6/src/poppler-link-extractor-private.h b/qt6/src/poppler-link-extractor-private.h
index e2cc78b2..b36a3cc0 100644
--- a/qt6/src/poppler-link-extractor-private.h
+++ b/qt6/src/poppler-link-extractor-private.h
@@ -1,6 +1,7 @@
 /* poppler-link-extractor_p.h: qt interface to poppler
  * Copyright (C) 2007, 2008, 2011, Pino Toscano <pino at kde.org>
  * Copyright (C) 2021, Oliver Sander <oliver.sander at tu-dresden.de>
+ * Copyright (C) 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -36,7 +37,7 @@ class PageData;
 class LinkExtractorOutputDev : public OutputDev
 {
 public:
-    LinkExtractorOutputDev(PageData *data);
+    explicit LinkExtractorOutputDev(PageData *data);
     ~LinkExtractorOutputDev() override;
 
     // inherited from OutputDev
diff --git a/qt6/src/poppler-link-private.h b/qt6/src/poppler-link-private.h
index 4921a633..edf334b3 100644
--- a/qt6/src/poppler-link-private.h
+++ b/qt6/src/poppler-link-private.h
@@ -1,5 +1,5 @@
 /* poppler-link-private.h: qt interface to poppler
- * Copyright (C) 2016, 2018, 2020 Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2016, 2018, 2020, 2021 Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2018 Intevation GmbH <intevation at intevation.de>
  * Copyright (C) 2020, 2021 Oliver Sander <oliver.sander at tu-dresden.de>
  *
@@ -34,7 +34,7 @@ class Link;
 class LinkPrivate
 {
 public:
-    LinkPrivate(const QRectF &area) : linkArea(area) { }
+    explicit LinkPrivate(const QRectF &area) : linkArea(area) { }
 
     virtual ~LinkPrivate();
 
diff --git a/qt6/src/poppler-link.cc b/qt6/src/poppler-link.cc
index 8a5bb1d6..b2c1b24b 100644
--- a/qt6/src/poppler-link.cc
+++ b/qt6/src/poppler-link.cc
@@ -1,5 +1,5 @@
 /* poppler-link.cc: qt interface to poppler
- * Copyright (C) 2006-2007, 2013, 2016-2020, Albert Astals Cid
+ * Copyright (C) 2006-2007, 2013, 2016-2021, Albert Astals Cid
  * Copyright (C) 2007-2008, Pino Toscano <pino at kde.org>
  * Copyright (C) 2010 Hib Eris <hib at hiberis.nl>
  * Copyright (C) 2012, Tobias Koenig <tokoe at kdab.com>
@@ -92,7 +92,7 @@ LinkGotoPrivate::~LinkGotoPrivate() = default;
 class LinkExecutePrivate : public LinkPrivate
 {
 public:
-    LinkExecutePrivate(const QRectF &area);
+    explicit LinkExecutePrivate(const QRectF &area);
     ~LinkExecutePrivate() override;
 
     QString fileName;
@@ -106,7 +106,7 @@ LinkExecutePrivate::~LinkExecutePrivate() = default;
 class LinkBrowsePrivate : public LinkPrivate
 {
 public:
-    LinkBrowsePrivate(const QRectF &area);
+    explicit LinkBrowsePrivate(const QRectF &area);
     ~LinkBrowsePrivate() override;
 
     QString url;
@@ -119,7 +119,7 @@ LinkBrowsePrivate::~LinkBrowsePrivate() = default;
 class LinkActionPrivate : public LinkPrivate
 {
 public:
-    LinkActionPrivate(const QRectF &area);
+    explicit LinkActionPrivate(const QRectF &area);
     ~LinkActionPrivate() override;
 
     LinkAction::ActionType type;
@@ -132,7 +132,7 @@ LinkActionPrivate::~LinkActionPrivate() = default;
 class LinkSoundPrivate : public LinkPrivate
 {
 public:
-    LinkSoundPrivate(const QRectF &area);
+    explicit LinkSoundPrivate(const QRectF &area);
     ~LinkSoundPrivate() override;
 
     double volume;
@@ -191,7 +191,7 @@ LinkRenditionPrivate::~LinkRenditionPrivate()
 class LinkJavaScriptPrivate : public LinkPrivate
 {
 public:
-    LinkJavaScriptPrivate(const QRectF &area);
+    explicit LinkJavaScriptPrivate(const QRectF &area);
     ~LinkJavaScriptPrivate() override;
 
     QString js;
diff --git a/qt6/src/poppler-link.h b/qt6/src/poppler-link.h
index 595916fd..7cadd218 100644
--- a/qt6/src/poppler-link.h
+++ b/qt6/src/poppler-link.h
@@ -1,5 +1,5 @@
 /* poppler-link.h: qt interface to poppler
- * Copyright (C) 2006, 2013, 2016, 2018, 2019, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2006, 2013, 2016, 2018, 2019, 2021, Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2007-2008, 2010, Pino Toscano <pino at kde.org>
  * Copyright (C) 2010, 2012, Guillermo Amaral <gamaral at kdab.com>
  * Copyright (C) 2012, Tobias Koenig <tokoe at kdab.com>
@@ -90,8 +90,8 @@ public:
     };
 
     /// \cond PRIVATE
-    LinkDestination(const LinkDestinationData &data);
-    LinkDestination(const QString &description);
+    explicit LinkDestination(const LinkDestinationData &data);
+    explicit LinkDestination(const QString &description);
     /// \endcond
     /**
      * Copy constructor.
@@ -178,7 +178,7 @@ class POPPLER_QT6_EXPORT Link
 {
 public:
     /// \cond PRIVATE
-    Link(const QRectF &linkArea);
+    explicit Link(const QRectF &linkArea);
     /// \endcond
 
     /**
@@ -228,7 +228,7 @@ public:
 
 protected:
     /// \cond PRIVATE
-    Link(LinkPrivate &dd);
+    explicit Link(LinkPrivate &dd);
     Q_DECLARE_PRIVATE(Link)
     LinkPrivate *d_ptr;
     /// \endcond
@@ -609,7 +609,7 @@ public:
     /**
      * Create a new OCGState link. This is only used by Poppler::Page.
      */
-    LinkOCGState(LinkOCGStatePrivate *ocgp);
+    explicit LinkOCGState(LinkOCGStatePrivate *ocgp);
     /**
      * Destructor.
      */
@@ -631,7 +631,7 @@ public:
     /**
      * Create a new Hide link. This is only used by Poppler::Page.
      */
-    LinkHide(LinkHidePrivate *lhidep);
+    explicit LinkHide(LinkHidePrivate *lhidep);
     /**
      * Destructor.
      */
diff --git a/qt6/src/poppler-media.cc b/qt6/src/poppler-media.cc
index b493b8dd..5c804951 100644
--- a/qt6/src/poppler-media.cc
+++ b/qt6/src/poppler-media.cc
@@ -1,6 +1,6 @@
 /* poppler-media.cc: qt interface to poppler
  * Copyright (C) 2012 Guillermo A. Amaral B. <gamaral at kde.org>
- * Copyright (C) 2013, 2018 Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2013, 2018, 2021 Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -32,7 +32,7 @@ namespace Poppler {
 class MediaRenditionPrivate
 {
 public:
-    MediaRenditionPrivate(::MediaRendition *renditionA) : rendition(renditionA) { }
+    explicit MediaRenditionPrivate(::MediaRendition *renditionA) : rendition(renditionA) { }
 
     ~MediaRenditionPrivate() { delete rendition; }
 
diff --git a/qt6/src/poppler-media.h b/qt6/src/poppler-media.h
index e6c793b7..83bd3294 100644
--- a/qt6/src/poppler-media.h
+++ b/qt6/src/poppler-media.h
@@ -1,6 +1,6 @@
 /* poppler-media.h: qt interface to poppler
  * Copyright (C) 2012 Guillermo A. Amaral B. <gamaral at kde.org>
- * Copyright (C) 2012, 2013 Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2012, 2013, 2021 Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -40,7 +40,7 @@ public:
     /**
       Constructs a MediaRendition. Takes ownership of the passed rendition
      */
-    MediaRendition(::MediaRendition *rendition);
+    explicit MediaRendition(::MediaRendition *rendition);
     ~MediaRendition();
 
     /**
diff --git a/qt6/src/poppler-optcontent-private.h b/qt6/src/poppler-optcontent-private.h
index 550a7bcc..589fb0bc 100644
--- a/qt6/src/poppler-optcontent-private.h
+++ b/qt6/src/poppler-optcontent-private.h
@@ -2,7 +2,7 @@
  *
  * Copyright (C) 2007, Brad Hards <bradh at kde.org>
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
- * Copyright (C) 2016, 2018, 2019, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2016, 2018, 2019, 2021, Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2017, Hubert Figuière <hub at figuiere.net>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -59,8 +59,8 @@ public:
         HeadingOnly
     };
 
-    OptContentItem(OptionalContentGroup *group);
-    OptContentItem(const QString &label);
+    explicit OptContentItem(OptionalContentGroup *group);
+    explicit OptContentItem(const QString &label);
     OptContentItem();
     ~OptContentItem();
 
diff --git a/qt6/src/poppler-optcontent.h b/qt6/src/poppler-optcontent.h
index 2aaea362..6b9467a3 100644
--- a/qt6/src/poppler-optcontent.h
+++ b/qt6/src/poppler-optcontent.h
@@ -3,7 +3,7 @@
  * Copyright (C) 2007, Brad Hards <bradh at kde.org>
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
  * Copyright (C) 2013, Anthony Granger <grangeranthony at gmail.com>
- * Copyright (C) 2016, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2016, 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -71,7 +71,7 @@ public:
     void applyLink(LinkOCGState *link);
 
 private:
-    OptContentModel(OCGs *optContent, QObject *parent = nullptr);
+    explicit OptContentModel(OCGs *optContent, QObject *parent = nullptr);
 
     friend class OptContentModelPrivate;
     OptContentModelPrivate *d;
diff --git a/qt6/src/poppler-page-transition.cc b/qt6/src/poppler-page-transition.cc
index 30f8bee2..2e1687cc 100644
--- a/qt6/src/poppler-page-transition.cc
+++ b/qt6/src/poppler-page-transition.cc
@@ -1,7 +1,7 @@
 /* PageTransition.cc
  * Copyright (C) 2005, Net Integration Technologies, Inc.
  * Copyright (C) 2015, Arseniy Lartsev <arseniy at alumni.chalmers.se>
- * Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2018, 2021 Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -27,7 +27,7 @@ namespace Poppler {
 class PageTransitionData
 {
 public:
-    PageTransitionData(Object *trans) { pt = new ::PageTransition(trans); }
+    explicit PageTransitionData(Object *trans) { pt = new ::PageTransition(trans); }
 
     PageTransitionData(const PageTransitionData &ptd) { pt = new ::PageTransition(*ptd.pt); }
 
diff --git a/qt6/src/poppler-page-transition.h b/qt6/src/poppler-page-transition.h
index e7dac916..6c09623d 100644
--- a/qt6/src/poppler-page-transition.h
+++ b/qt6/src/poppler-page-transition.h
@@ -2,7 +2,7 @@
  * Copyright (C) 2005, Net Integration Technologies, Inc.
  * Copyright (C) 2005, Brad Hards <bradh at frogmouth.net>
  * Copyright (C) 2015, Arseniy Lartsev <arseniy at alumni.chalmers.se>
- * Copyright (C) 2018 Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2018, 2021, Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -84,7 +84,7 @@ public:
         Outward
     };
 
-    PageTransition(const PageTransitionParams params);
+    explicit PageTransition(const PageTransitionParams params);
 
     /** \brief copy constructor */
     PageTransition(const PageTransition &pt);
diff --git a/qt6/src/poppler-private.h b/qt6/src/poppler-private.h
index 7ca700f6..ca69d676 100644
--- a/qt6/src/poppler-private.h
+++ b/qt6/src/poppler-private.h
@@ -1,7 +1,7 @@
 /* poppler-private.h: qt interface to poppler
  * Copyright (C) 2005, Net Integration Technologies, Inc.
  * Copyright (C) 2005, 2008, Brad Hards <bradh at frogmouth.net>
- * Copyright (C) 2006-2009, 2011, 2012, 2017-2020 by Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2006-2009, 2011, 2012, 2017-2021 by Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2007-2009, 2011, 2014 by Pino Toscano <pino at kde.org>
  * Copyright (C) 2011 Andreas Hartmetz <ahartmetz at gmail.com>
  * Copyright (C) 2011 Hib Eris <hib at hiberis.nl>
@@ -196,7 +196,7 @@ public:
         type = FontInfo::unknown;
     }
 
-    FontInfoData(::FontInfo *fi)
+    explicit FontInfoData(::FontInfo *fi)
     {
         if (fi->getName())
             fontName = fi->getName()->c_str();
diff --git a/qt6/src/poppler-qiodeviceoutstream-private.h b/qt6/src/poppler-qiodeviceoutstream-private.h
index a97317f6..9f407d17 100644
--- a/qt6/src/poppler-qiodeviceoutstream-private.h
+++ b/qt6/src/poppler-qiodeviceoutstream-private.h
@@ -1,6 +1,7 @@
 /* poppler-qiodevicestream-private.h: Qt6 interface to poppler
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
  * Copyright (C) 2013 Adrian Johnson <ajohnson at redneon.com>
+ * Copyright (C) 2021 Albert Astals Cid <aacid at kde.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -30,7 +31,7 @@ namespace Poppler {
 class QIODeviceOutStream : public OutStream
 {
 public:
-    QIODeviceOutStream(QIODevice *device);
+    explicit QIODeviceOutStream(QIODevice *device);
     ~QIODeviceOutStream() override;
 
     void close() override;
diff --git a/qt6/src/poppler-qt6.h b/qt6/src/poppler-qt6.h
index 9650b97e..73ae20e7 100644
--- a/qt6/src/poppler-qt6.h
+++ b/qt6/src/poppler-qt6.h
@@ -202,7 +202,7 @@ public:
     /**
        Create a new font information container.
     */
-    FontInfo(const FontInfoData &fid);
+    explicit FontInfo(const FontInfoData &fid);
     /// \endcond
 
     /**
@@ -337,7 +337,7 @@ class POPPLER_QT6_EXPORT EmbeddedFile
 
 public:
     /// \cond PRIVATE
-    EmbeddedFile(EmbFile *embfile);
+    explicit EmbeddedFile(EmbFile *embfile);
     /// \endcond
 
     /**
@@ -403,7 +403,7 @@ public:
 
 private:
     Q_DISABLE_COPY(EmbeddedFile)
-    EmbeddedFile(EmbeddedFileData &dd);
+    explicit EmbeddedFile(EmbeddedFileData &dd);
 
     EmbeddedFileData *m_embeddedFile;
 };
@@ -993,7 +993,7 @@ public:
     QVector<OutlineItem> children() const;
 
 private:
-    OutlineItem(OutlineItemData *data);
+    explicit OutlineItem(OutlineItemData *data);
     OutlineItemData *m_data;
 };
 
@@ -1732,7 +1732,7 @@ private:
 
     DocumentData *m_doc;
 
-    Document(DocumentData *dataA);
+    explicit Document(DocumentData *dataA);
 };
 
 class BaseConverterPrivate;
@@ -1783,7 +1783,7 @@ public:
 
 protected:
     /// \cond PRIVATE
-    BaseConverter(BaseConverterPrivate &dd);
+    explicit BaseConverter(BaseConverterPrivate &dd);
     Q_DECLARE_PRIVATE(BaseConverter)
     BaseConverterPrivate *d_ptr;
     /// \endcond
@@ -1919,7 +1919,7 @@ private:
     Q_DECLARE_PRIVATE(PSConverter)
     Q_DISABLE_COPY(PSConverter)
 
-    PSConverter(DocumentData *document);
+    explicit PSConverter(DocumentData *document);
 };
 
 /**
@@ -2068,7 +2068,7 @@ private:
     Q_DECLARE_PRIVATE(PDFConverter)
     Q_DISABLE_COPY(PDFConverter)
 
-    PDFConverter(DocumentData *document);
+    explicit PDFConverter(DocumentData *document);
 };
 
 /**
@@ -2120,7 +2120,7 @@ public:
     /** \cond PRIVATE
       The caller keeps the ownership of the popplersound argument
     */
-    SoundObject(Sound *popplersound);
+    explicit SoundObject(Sound *popplersound);
     /// \endcond
 
     ~SoundObject();
@@ -2227,7 +2227,7 @@ public:
 
 private:
     /// \cond PRIVATE
-    MovieObject(AnnotMovie *ann);
+    explicit MovieObject(AnnotMovie *ann);
     /// \endcond
 
     Q_DISABLE_COPY(MovieObject)
diff --git a/qt6/tests/check_actualtext.cpp b/qt6/tests/check_actualtext.cpp
index 1aa4ba67..d2eff79a 100644
--- a/qt6/tests/check_actualtext.cpp
+++ b/qt6/tests/check_actualtext.cpp
@@ -8,7 +8,7 @@ class TestActualText : public QObject
 {
     Q_OBJECT
 public:
-    TestActualText(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestActualText(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkActualText1();
     void checkActualText2();
diff --git a/qt6/tests/check_annotations.cpp b/qt6/tests/check_annotations.cpp
index d0cd2fc6..3476dd60 100644
--- a/qt6/tests/check_annotations.cpp
+++ b/qt6/tests/check_annotations.cpp
@@ -15,7 +15,7 @@ class TestAnnotations : public QObject
 {
     Q_OBJECT
 public:
-    TestAnnotations(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestAnnotations(QObject *parent = nullptr) : QObject(parent) { }
 
     void saveAndCheck(const std::unique_ptr<Poppler::Document> &doc, const std::function<void(Poppler::Annotation *a)> &checkFunction);
 
diff --git a/qt6/tests/check_attachments.cpp b/qt6/tests/check_attachments.cpp
index f586a921..319ec4ee 100644
--- a/qt6/tests/check_attachments.cpp
+++ b/qt6/tests/check_attachments.cpp
@@ -8,7 +8,7 @@ class TestAttachments : public QObject
 {
     Q_OBJECT
 public:
-    TestAttachments(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestAttachments(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkNoAttachments();
     void checkAttach1();
diff --git a/qt6/tests/check_dateConversion.cpp b/qt6/tests/check_dateConversion.cpp
index 69be1724..d675a405 100644
--- a/qt6/tests/check_dateConversion.cpp
+++ b/qt6/tests/check_dateConversion.cpp
@@ -9,7 +9,7 @@ class TestDateConv : public QObject
 {
     Q_OBJECT
 public:
-    TestDateConv(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestDateConv(QObject *parent = nullptr) : QObject(parent) { }
 
 private slots:
     void initTestCase();
diff --git a/qt6/tests/check_fonts.cpp b/qt6/tests/check_fonts.cpp
index 12864454..e8389e3c 100644
--- a/qt6/tests/check_fonts.cpp
+++ b/qt6/tests/check_fonts.cpp
@@ -8,7 +8,7 @@ class TestFontsData : public QObject
 {
     Q_OBJECT
 public:
-    TestFontsData(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestFontsData(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkNoFonts();
     void checkType1();
diff --git a/qt6/tests/check_forms.cpp b/qt6/tests/check_forms.cpp
index 841fcafb..36a00f19 100644
--- a/qt6/tests/check_forms.cpp
+++ b/qt6/tests/check_forms.cpp
@@ -9,7 +9,7 @@ class TestForms : public QObject
 {
     Q_OBJECT
 public:
-    TestForms(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestForms(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void testCheckbox(); // Test for issue #655
     void testCheckboxIssue159(); // Test for issue #159
@@ -172,7 +172,7 @@ void TestForms::testSetIcon()
     }
 
     // Just making sure that setting a invalid icon will still produce a valid icon.
-    anmButton->setIcon(nullptr);
+    anmButton->setIcon(Poppler::FormFieldIcon(nullptr));
     Poppler::FormFieldIcon anmIcon = anmButton->icon();
 
     QVERIFY(Poppler::FormFieldIconData::getData(anmIcon));
diff --git a/qt6/tests/check_goostring.cpp b/qt6/tests/check_goostring.cpp
index 626e7774..4a07cc6d 100644
--- a/qt6/tests/check_goostring.cpp
+++ b/qt6/tests/check_goostring.cpp
@@ -7,7 +7,7 @@ class TestGooString : public QObject
 {
     Q_OBJECT
 public:
-    TestGooString(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestGooString(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void testInsertData_data();
     void testInsertData();
diff --git a/qt6/tests/check_internal_outline.cpp b/qt6/tests/check_internal_outline.cpp
index 0119d909..02342de5 100644
--- a/qt6/tests/check_internal_outline.cpp
+++ b/qt6/tests/check_internal_outline.cpp
@@ -8,7 +8,7 @@ class TestInternalOutline : public QObject
 {
     Q_OBJECT
 public:
-    TestInternalOutline(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestInternalOutline(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void testCreateOutline();
     void testSetOutline();
diff --git a/qt6/tests/check_lexer.cpp b/qt6/tests/check_lexer.cpp
index f0b5e134..9c60962a 100644
--- a/qt6/tests/check_lexer.cpp
+++ b/qt6/tests/check_lexer.cpp
@@ -7,7 +7,7 @@ class TestLexer : public QObject
 {
     Q_OBJECT
 public:
-    TestLexer(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestLexer(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void testNumbers();
 };
diff --git a/qt6/tests/check_links.cpp b/qt6/tests/check_links.cpp
index 52112400..04075c52 100644
--- a/qt6/tests/check_links.cpp
+++ b/qt6/tests/check_links.cpp
@@ -8,7 +8,7 @@ class TestLinks : public QObject
 {
     Q_OBJECT
 public:
-    TestLinks(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestLinks(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkDocumentWithNoDests();
     void checkDests_xr01();
diff --git a/qt6/tests/check_metadata.cpp b/qt6/tests/check_metadata.cpp
index 9c5c722c..e5008009 100644
--- a/qt6/tests/check_metadata.cpp
+++ b/qt6/tests/check_metadata.cpp
@@ -6,7 +6,7 @@ class TestMetaData : public QObject
 {
     Q_OBJECT
 public:
-    TestMetaData(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestMetaData(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkStrings_data();
     void checkStrings();
diff --git a/qt6/tests/check_object.cpp b/qt6/tests/check_object.cpp
index e3bc0ee5..08a7f750 100644
--- a/qt6/tests/check_object.cpp
+++ b/qt6/tests/check_object.cpp
@@ -7,7 +7,7 @@ class TestObject : public QObject
 {
     Q_OBJECT
 public:
-    TestObject(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestObject(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void benchDefaultConstructor();
     void benchMoveConstructor();
diff --git a/qt6/tests/check_optcontent.cpp b/qt6/tests/check_optcontent.cpp
index e417c034..b5956682 100644
--- a/qt6/tests/check_optcontent.cpp
+++ b/qt6/tests/check_optcontent.cpp
@@ -10,7 +10,7 @@ class TestOptionalContent : public QObject
 {
     Q_OBJECT
 public:
-    TestOptionalContent(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestOptionalContent(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkVisPolicy();
     void checkNestedLayers();
diff --git a/qt6/tests/check_outline.cpp b/qt6/tests/check_outline.cpp
index dc03a139..8f7383e1 100644
--- a/qt6/tests/check_outline.cpp
+++ b/qt6/tests/check_outline.cpp
@@ -8,7 +8,7 @@ class TestOutline : public QObject
 {
     Q_OBJECT
 public:
-    TestOutline(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestOutline(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkOutline_xr02();
 };
diff --git a/qt6/tests/check_pagelabelinfo.cpp b/qt6/tests/check_pagelabelinfo.cpp
index 520a5f9b..a8e0f9ef 100644
--- a/qt6/tests/check_pagelabelinfo.cpp
+++ b/qt6/tests/check_pagelabelinfo.cpp
@@ -10,7 +10,7 @@ class TestPageLabelInfo : public QObject
 {
     Q_OBJECT
 public:
-    TestPageLabelInfo(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestPageLabelInfo(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void testFromDecimal();
     void testFromDecimalUnicode();
diff --git a/qt6/tests/check_pagelayout.cpp b/qt6/tests/check_pagelayout.cpp
index a61a8d5f..e17b293e 100644
--- a/qt6/tests/check_pagelayout.cpp
+++ b/qt6/tests/check_pagelayout.cpp
@@ -6,7 +6,7 @@ class TestPageLayout : public QObject
 {
     Q_OBJECT
 public:
-    TestPageLayout(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestPageLayout(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkNone();
     void checkSingle();
diff --git a/qt6/tests/check_pagemode.cpp b/qt6/tests/check_pagemode.cpp
index 80707413..f20548d0 100644
--- a/qt6/tests/check_pagemode.cpp
+++ b/qt6/tests/check_pagemode.cpp
@@ -6,7 +6,7 @@ class TestPageMode : public QObject
 {
     Q_OBJECT
 public:
-    TestPageMode(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestPageMode(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkNone();
     void checkFullScreen();
diff --git a/qt6/tests/check_password.cpp b/qt6/tests/check_password.cpp
index e41cfced..24b6f4fa 100644
--- a/qt6/tests/check_password.cpp
+++ b/qt6/tests/check_password.cpp
@@ -6,7 +6,7 @@ class TestPassword : public QObject
 {
     Q_OBJECT
 public:
-    TestPassword(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestPassword(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void password1();
     void password1a();
diff --git a/qt6/tests/check_permissions.cpp b/qt6/tests/check_permissions.cpp
index c9f94188..fde19161 100644
--- a/qt6/tests/check_permissions.cpp
+++ b/qt6/tests/check_permissions.cpp
@@ -6,7 +6,7 @@ class TestPermissions : public QObject
 {
     Q_OBJECT
 public:
-    TestPermissions(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestPermissions(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void permissions1();
 };
diff --git a/qt6/tests/check_search.cpp b/qt6/tests/check_search.cpp
index 468e799f..b0e84482 100644
--- a/qt6/tests/check_search.cpp
+++ b/qt6/tests/check_search.cpp
@@ -6,7 +6,7 @@ class TestSearch : public QObject
 {
     Q_OBJECT
 public:
-    TestSearch(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestSearch(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void testAcrossLinesSearch(); // leave it first
     void bug7063();
diff --git a/qt6/tests/check_strings.cpp b/qt6/tests/check_strings.cpp
index fdd2f703..0fe8a7ee 100644
--- a/qt6/tests/check_strings.cpp
+++ b/qt6/tests/check_strings.cpp
@@ -32,7 +32,7 @@ class TestStrings : public QObject
     Q_OBJECT
 
 public:
-    TestStrings(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestStrings(QObject *parent = nullptr) : QObject(parent) { }
 
 private slots:
     void initTestCase();
diff --git a/qt6/tests/check_stroke_opacity.cpp b/qt6/tests/check_stroke_opacity.cpp
index 2b10d1bc..9ece677a 100644
--- a/qt6/tests/check_stroke_opacity.cpp
+++ b/qt6/tests/check_stroke_opacity.cpp
@@ -11,7 +11,7 @@ class TestStrokeOpacity : public QObject
 {
     Q_OBJECT
 public:
-    TestStrokeOpacity(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestStrokeOpacity(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void checkStrokeOpacity_data();
     void checkStrokeOpacity();
diff --git a/qt6/tests/check_utf_conversion.cpp b/qt6/tests/check_utf_conversion.cpp
index f2a66096..af5a65b4 100644
--- a/qt6/tests/check_utf_conversion.cpp
+++ b/qt6/tests/check_utf_conversion.cpp
@@ -13,7 +13,7 @@ class TestUTFConversion : public QObject
 {
     Q_OBJECT
 public:
-    TestUTFConversion(QObject *parent = nullptr) : QObject(parent) { }
+    explicit TestUTFConversion(QObject *parent = nullptr) : QObject(parent) { }
 private slots:
     void testUTF_data();
     void testUTF();
diff --git a/qt6/tests/stress-threads-qt6.cpp b/qt6/tests/stress-threads-qt6.cpp
index d88b20f4..11887652 100644
--- a/qt6/tests/stress-threads-qt6.cpp
+++ b/qt6/tests/stress-threads-qt6.cpp
@@ -21,7 +21,7 @@ class SillyThread : public QThread
 {
     Q_OBJECT
 public:
-    SillyThread(Poppler::Document *document, QObject *parent = nullptr);
+    explicit SillyThread(Poppler::Document *document, QObject *parent = nullptr);
 
     void run() override;
 
diff --git a/qt6/tests/test-password-qt6.cpp b/qt6/tests/test-password-qt6.cpp
index e4a247cd..339e75f2 100644
--- a/qt6/tests/test-password-qt6.cpp
+++ b/qt6/tests/test-password-qt6.cpp
@@ -11,7 +11,7 @@ class PDFDisplay : public QWidget // picture display widget
 {
     Q_OBJECT
 public:
-    PDFDisplay(std::unique_ptr<Poppler::Document> &&d, QWidget *parent = nullptr);
+    explicit PDFDisplay(std::unique_ptr<Poppler::Document> &&d, QWidget *parent = nullptr);
     ~PDFDisplay() override;
 
 protected:
diff --git a/splash/SplashClip.h b/splash/SplashClip.h
index 74dc616d..0b7dd149 100644
--- a/splash/SplashClip.h
+++ b/splash/SplashClip.h
@@ -116,7 +116,7 @@ public:
     int getNumPaths() { return length; }
 
 protected:
-    SplashClip(const SplashClip *clip);
+    explicit SplashClip(const SplashClip *clip);
     void grow(int nPaths);
     bool testClipPaths(int x, int y);
 
diff --git a/splash/SplashPath.h b/splash/SplashPath.h
index 4448a645..34da6c63 100644
--- a/splash/SplashPath.h
+++ b/splash/SplashPath.h
@@ -122,7 +122,7 @@ public:
     void reserve(int n);
 
 protected:
-    SplashPath(const SplashPath *path);
+    explicit SplashPath(const SplashPath *path);
     void grow(int nPts);
     bool noCurrentPoint() { return curSubpath == length; }
     bool onePointSubpath() { return curSubpath == length - 1; }
diff --git a/splash/SplashPattern.h b/splash/SplashPattern.h
index 3c93b6e8..c99302c0 100644
--- a/splash/SplashPattern.h
+++ b/splash/SplashPattern.h
@@ -66,7 +66,7 @@ private:
 class POPPLER_PRIVATE_EXPORT SplashSolidColor : public SplashPattern
 {
 public:
-    SplashSolidColor(SplashColorConstPtr colorA);
+    explicit SplashSolidColor(SplashColorConstPtr colorA);
 
     SplashPattern *copy() const override { return new SplashSolidColor(color); }
 
diff --git a/splash/SplashScreen.h b/splash/SplashScreen.h
index 64a9c1fd..8420845e 100644
--- a/splash/SplashScreen.h
+++ b/splash/SplashScreen.h
@@ -32,8 +32,8 @@
 class SplashScreen
 {
 public:
-    SplashScreen(const SplashScreenParams *params);
-    SplashScreen(const SplashScreen *screen);
+    explicit SplashScreen(const SplashScreenParams *params);
+    explicit SplashScreen(const SplashScreen *screen);
     ~SplashScreen();
 
     SplashScreen(const SplashScreen &) = delete;
diff --git a/splash/SplashState.h b/splash/SplashState.h
index 26fbaffd..a7e4f686 100644
--- a/splash/SplashState.h
+++ b/splash/SplashState.h
@@ -89,7 +89,7 @@ public:
     void setTransfer(unsigned char *red, unsigned char *green, unsigned char *blue, unsigned char *gray);
 
 private:
-    SplashState(const SplashState *state);
+    explicit SplashState(const SplashState *state);
 
     SplashCoord matrix[6];
     SplashPattern *strokePattern;
diff --git a/utils/HtmlOutputDev.h b/utils/HtmlOutputDev.h
index 8ad8ebf1..6159c955 100644
--- a/utils/HtmlOutputDev.h
+++ b/utils/HtmlOutputDev.h
@@ -14,7 +14,7 @@
 // All changes made under the Poppler project to this file are licensed
 // under GPL version 2 or later
 //
-// Copyright (C) 2006, 2007, 2009, 2012, 2018-2020 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2006, 2007, 2009, 2012, 2018-2021 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2008, 2009 Warren Toomey <wkt at tuhs.org>
 // Copyright (C) 2009, 2011 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2009 Kovid Goyal <kovid at kovidgoyal.net>
@@ -112,7 +112,7 @@ class HtmlPage
 {
 public:
     // Constructor.
-    HtmlPage(bool rawOrder);
+    explicit HtmlPage(bool rawOrder);
 
     // Destructor.
     ~HtmlPage();


More information about the poppler mailing list