Bug 492542

Summary: Build failed with : metaengine.cpp:331:42: error: ‘as_const’ is not a member of ‘std’
Product: [Applications] digikam Reporter: pascal lacroix <kikoucalou>
Component: Portability-CompilationAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: caulier.gilles
Priority: NOR    
Version First Reported In: 8.5.0   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed/Implemented In: 8.5.0
Sentry Crash Report:

Description pascal lacroix 2024-09-02 12:22:03 UTC
OBSERVED RESULT

From git

Build build metaengine.cpp failed with error : 

"  3%] Building CXX object core/libs/metadataengine/CMakeFiles/core_dmetadata_obj.dir/engine/metaengine.cpp.o
In file included from /mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-02/digikam/core/libs/metadataengine/engine/metaengine_p.h:110,
                 from /mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-02/digikam/core/libs/metadataengine/engine/metaengine.cpp:22:
/mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-02/digikam/core/libs/metadataengine/engine/metaengine_mergehelper.h: In member function ‘void Digikam::MetaEngineMergeHelper<Data, Key, KeyString, KeyStringList>::mergeFields(const Data&, Data&)’:
/mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-02/digikam/core/libs/metadataengine/engine/metaengine_mergehelper.h:69:48: error: ‘as_const’ is not a member of ‘std’
   69 |         for (const KeyString& keyString : std::as_const(keys))
      |                                                ^~~~~~~~
/mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-02/digikam/core/libs/metadataengine/engine/metaengine_mergehelper.h:69:48: note: ‘std::as_const’ is only available from C++17 onwards
/mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-02/digikam/core/libs/metadataengine/engine/metaengine_mergehelper.h: In member function ‘void Digikam::MetaEngineMergeHelper<Data, Key, KeyString, KeyStringList>::exclusiveMerge(const Data&, Data&)’:
/mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-02/digikam/core/libs/metadataengine/engine/metaengine_mergehelper.h:101:48: error: ‘as_const’ is not a member of ‘std’
  101 |         for (const KeyString& keyString : std::as_const(keys))
      |                                                ^~~~~~~~
/mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-02/digikam/core/libs/metadataengine/engine/metaengine_mergehelper.h:101:48: note: ‘std::as_const’ is only available from C++17 onwards
/mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-02/digikam/core/libs/metadataengine/engine/metaengine.cpp: In member function ‘bool Digikam::MetaEngine::loadFromDataAndMerge(const QByteArray&, const QStringList&)’:
/mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-02/digikam/core/libs/metadataengine/engine/metaengine.cpp:331:42: error: ‘as_const’ is not a member of ‘std’
  331 |         for (const QString& exTag : std::as_const(exclude))
      |                                          ^~~~~~~~
/mnt/2c98cfab-4320-4ff2-b8d7-f2da522cc741/digikam-devel/dk-2024-09-02/digikam/core/libs/metadataengine/engine/metaengine.cpp:331:42: note: ‘std::as_const’ is only available from C++17 onwards
make[2]: *** [core/libs/metadataengine/CMakeFiles/core_dmetadata_obj.dir/build.make:96 : core/libs/metadataengine/CMakeFiles/core_dmetadata_obj.dir/engine/metaengine.cpp.o] Erreur 1
make[1]: *** [CMakeFiles/Makefile2:8885 : core/libs/metadataengine/CMakeFiles/core_dmetadata_obj.dir/all] Erreur 2
make: *** [Makefile:146 : all] Erreur 2 "


SOFTWARE/OS VERSIONS

Linux
Distribution		: Linux Mint 22

Environnement de développement de KDE Version 5.115.0
Qt Version 5.15.13 (Compilé avec 5.15.13)

ADDITIONAL INFORMATION*

Digikam build and run nicely  on Révision : 94c885e544fb846c8a867a9c4845d6f0b88f9c50
Comment 1 caulier.gilles 2024-09-02 12:37:22 UTC
Git commit a146384918ab4e105dbe27e98228bd27c8d51d87 by Gilles Caulier.
Committed on 02/09/2024 at 12:35.
Pushed by cgilles into branch 'master'.

as some older Exiv2 versions do not support C++17, we cannot yet uses std::as_const() in metadataengine code
FIXED-IN: 8.5.0

M  +2    -2    core/libs/metadataengine/dmetadata/dmetadata_comments.cpp
M  +1    -1    core/libs/metadataengine/dmetadata/dmetadata_exif.cpp
M  +2    -2    core/libs/metadataengine/dmetadata/dmetadata_generic.cpp
M  +1    -1    core/libs/metadataengine/dmetadata/dmetadata_imagemagick.cpp
M  +2    -2    core/libs/metadataengine/dmetadata/dmetadata_labels.cpp
M  +3    -3    core/libs/metadataengine/dmetadata/dmetadata_tags.cpp
M  +1    -1    core/libs/metadataengine/dmetadata/dmetadata_template.cpp
M  +2    -2    core/libs/metadataengine/dmetadata/dmetadata_video.cpp
M  +1    -1    core/libs/metadataengine/dmetadata/dmetadatasettingscontainer.cpp
M  +1    -1    core/libs/metadataengine/engine/metaengine.cpp
M  +2    -2    core/libs/metadataengine/engine/metaengine_mergehelper.h
M  +1    -1    core/libs/metadataengine/engine/metaengine_p.cpp
M  +1    -1    core/libs/metadataengine/engine/metaengine_rotation.cpp
M  +1    -1    core/libs/metadataengine/exiftool/exiftoolparser.cpp
M  +3    -3    core/libs/metadataengine/exiftool/exiftoolparser_output.cpp
M  +1    -1    core/libs/metadataengine/focuspoint/focuspoints_extractor_canon.cpp
M  +1    -1    core/libs/metadataengine/focuspoint/focuspoints_extractor_nikon.cpp

https://invent.kde.org/graphics/digikam/-/commit/a146384918ab4e105dbe27e98228bd27c8d51d87
Comment 2 pascal lacroix 2024-09-02 17:28:33 UTC
Thanks !
It build and run now.