Warnings under unices
@zvezdochiot решил отдельно завести для варнингов под юниксы тикет, чтобы не загромождать под винду
Вот debian12 x64 с -D CMAKE_BUILD_TYPE=Release, boost я в список не включал. Завтра попробую эту войну и мир разгрести. Начну с -Wreorder, потому что это самое тривиальное, и там их куча, больше половины наверное
Выхлоп...
[ 10%] Building CXX object src/CMakeFiles/stcore.dir/CommandLine.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/CommandLine.h:30,
from /home/misha/Projects/scantailor-experimental/src/CommandLine.cpp:32:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
[ 14%] Building CXX object src/CMakeFiles/stcore.dir/DebugImagesImpl.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/DebugImagesImpl.cpp:23:
/home/misha/Projects/scantailor-experimental/src/foundation/ObjectSwapperImplGrid.h: In instantiation of ‘boost::shared_ptr<Grid<Node> > ObjectSwapperImpl<Grid<Node> >::swapIn() [with Node = VecNT<2, float>]’:
/home/misha/Projects/scantailor-experimental/src/foundation/ObjectSwapper.h:67:58: required from ‘void ObjectSwapper<Obj>::swapIn() [with Obj = Grid<VecNT<2, float> >]’
/home/misha/Projects/scantailor-experimental/src/DebugImagesImpl.cpp:123:72: required from here
/home/misha/Projects/scantailor-experimental/src/foundation/ObjectSwapperImplGrid.h:77:21: warning: comparison of integer expressions of different signedness: ‘qint64’ {aka ‘long long int’} and ‘const size_t’ {aka ‘const long unsigned int’} [-Wsign-compare]
77 | if (file.size() != bytes)
| ~~~~~~~~~~~~^~~~~~~~
[ 18%] Building CXX object src/CMakeFiles/stcore.dir/ProjectReader.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/ProjectPages.h:23,
from /home/misha/Projects/scantailor-experimental/src/ProjectReader.cpp:20:
In destructor ‘virtual RefCountable::~RefCountable()’,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:51:20,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:47:10,
inlined from ‘void intrusive_unref(T&) [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:114:14,
inlined from ‘IntrusivePtr<T>::~IntrusivePtr() [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:151:24,
inlined from ‘ProjectReader::~ProjectReader()’ at /home/misha/Projects/scantailor-experimental/src/ProjectReader.cpp:85:1:
/home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:40:30: warning: ‘void operator delete(void*, std::size_t)’ called on pointer ‘((IntrusivePtr<ProjectPages>*)this)[29].IntrusivePtr<ProjectPages>::m_pObj’ with nonzero offset 16 [-Wfree-nonheap-object]
40 | virtual ~RefCountable() {}
| ^
In destructor ‘virtual RefCountable::~RefCountable()’,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:51:20,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:47:10,
inlined from ‘void intrusive_unref(T&) [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:114:14,
inlined from ‘IntrusivePtr<T>::~IntrusivePtr() [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:151:24,
inlined from ‘void IntrusivePtr<T>::reset(T*) [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:175:5,
inlined from ‘void ProjectReader::processImages(const QDomElement&, Qt::LayoutDirection)’ at /home/misha/Projects/scantailor-experimental/src/ProjectReader.cpp:256:25:
/home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:40:30: warning: ‘void operator delete(void*, std::size_t)’ called on pointer ‘((IntrusivePtr<ProjectPages>*)this)[29].IntrusivePtr<ProjectPages>::m_pObj’ with nonzero offset 16 [-Wfree-nonheap-object]
40 | virtual ~RefCountable() {}
| ^
[ 22%] Building CXX object src/filters/output/CMakeFiles/output.dir/output_autogen/mocs_compilation.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/build/src/filters/output/output_autogen/EWIEGA46WW/../../../../../../src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/build/src/filters/output/output_autogen/EWIEGA46WW/../../../../../../src/filters/output/Settings.h:28,
from /home/misha/Projects/scantailor-experimental/build/src/filters/output/output_autogen/EWIEGA46WW/../../../../../../src/filters/output/OnDemandPictureZoneEditor.h:24,
from /home/misha/Projects/scantailor-experimental/build/src/filters/output/output_autogen/EWIEGA46WW/moc_OnDemandPictureZoneEditor.cpp:10,
from /home/misha/Projects/scantailor-experimental/build/src/filters/output/output_autogen/mocs_compilation.cpp:5:
/home/misha/Projects/scantailor-experimental/build/src/filters/output/output_autogen/EWIEGA46WW/../../../../../../src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/build/src/filters/output/output_autogen/EWIEGA46WW/../../../../../../src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/build/src/filters/output/output_autogen/EWIEGA46WW/../../../../../../src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/build/src/filters/output/output_autogen/EWIEGA46WW/../../../../../../src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/misha/Projects/scantailor-experimental/build/src/filters/output/output_autogen/EWIEGA46WW/../../../../../../src/filters/output/OutputImageParams.h:25,
from /home/misha/Projects/scantailor-experimental/build/src/filters/output/output_autogen/EWIEGA46WW/../../../../../../src/filters/output/OutputParams.h:22,
from /home/misha/Projects/scantailor-experimental/build/src/filters/output/output_autogen/EWIEGA46WW/../../../../../../src/filters/output/Settings.h:29:
/home/misha/Projects/scantailor-experimental/build/src/filters/output/output_autogen/EWIEGA46WW/../../../../../../src/filters/output/Params.h: In member function ‘const output::ColorParams::ColorMode& output::Params::colorMode() const’:
/home/misha/Projects/scantailor-experimental/build/src/filters/output/output_autogen/EWIEGA46WW/../../../../../../src/filters/output/Params.h:58:39: warning: returning reference to temporary [-Wreturn-local-addr]
58 | return m_colorParams.colorMode();
| ~~~~~~~~~~~~~~~~~~~~~~~^~
[ 23%] Building CXX object src/filters/output/CMakeFiles/output.dir/Filter.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OptionsWidget.h:30,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Filter.cpp:21:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputImageParams.h:25,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Settings.h:29,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Filter.cpp:24:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h: In member function ‘const output::ColorParams::ColorMode& output::Params::colorMode() const’:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:58:39: warning: returning reference to temporary [-Wreturn-local-addr]
58 | return m_colorParams.colorMode();
| ~~~~~~~~~~~~~~~~~~~~~~~^~
[ 23%] Building CXX object src/filters/output/CMakeFiles/output.dir/OptionsWidget.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OptionsWidget.h:30,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OptionsWidget.cpp:30:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputImageParams.h:25,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Settings.h:29,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OptionsWidget.cpp:32:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h: In member function ‘const output::ColorParams::ColorMode& output::Params::colorMode() const’:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:58:39: warning: returning reference to temporary [-Wreturn-local-addr]
58 | return m_colorParams.colorMode();
| ~~~~~~~~~~~~~~~~~~~~~~~^~
[ 23%] Building CXX object src/filters/output/CMakeFiles/output.dir/Task.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OptionsWidget.h:30,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Task.cpp:33:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/Task.cpp:34:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h: In member function ‘const output::ColorParams::ColorMode& output::Params::colorMode() const’:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:58:39: warning: returning reference to temporary [-Wreturn-local-addr]
58 | return m_colorParams.colorMode();
| ~~~~~~~~~~~~~~~~~~~~~~~^~
[ 24%] Building CXX object src/filters/output/CMakeFiles/output.dir/CacheDrivenTask.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputGenerator.h:35,
from /home/misha/Projects/scantailor-experimental/src/filters/output/CacheDrivenTask.cpp:20:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h: In member function ‘const output::ColorParams::ColorMode& output::Params::colorMode() const’:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:58:39: warning: returning reference to temporary [-Wreturn-local-addr]
58 | return m_colorParams.colorMode();
| ~~~~~~~~~~~~~~~~~~~~~~~^~
[ 24%] Building CXX object src/filters/output/CMakeFiles/output.dir/OutputGenerator.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputGenerator.h:35,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputGenerator.cpp:43:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h: In member function ‘const output::ColorParams::ColorMode& output::Params::colorMode() const’:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:58:39: warning: returning reference to temporary [-Wreturn-local-addr]
58 | return m_colorParams.colorMode();
| ~~~~~~~~~~~~~~~~~~~~~~~^~
[ 24%] Building CXX object src/filters/output/CMakeFiles/output.dir/Settings.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Settings.h:28,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Settings.cpp:23:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputImageParams.h:25,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Settings.h:29:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h: In member function ‘const output::ColorParams::ColorMode& output::Params::colorMode() const’:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:58:39: warning: returning reference to temporary [-Wreturn-local-addr]
58 | return m_colorParams.colorMode();
| ~~~~~~~~~~~~~~~~~~~~~~~^~
[ 25%] Building CXX object src/filters/output/CMakeFiles/output.dir/Params.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Params.cpp:23:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h: In member function ‘const output::ColorParams::ColorMode& output::Params::colorMode() const’:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:58:39: warning: returning reference to temporary [-Wreturn-local-addr]
58 | return m_colorParams.colorMode();
| ~~~~~~~~~~~~~~~~~~~~~~~^~
[ 25%] Building CXX object src/filters/output/CMakeFiles/output.dir/ColorGrayscaleOptions.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.cpp:19:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
[ 25%] Building CXX object src/filters/output/CMakeFiles/output.dir/RenderParams.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/RenderParams.cpp:20:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
[ 26%] Building CXX object src/filters/output/CMakeFiles/output.dir/ColorParams.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.cpp:19:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
[ 26%] Building CXX object src/filters/output/CMakeFiles/output.dir/OutputImageParams.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputImageParams.h:25,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputImageParams.cpp:24:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h: In member function ‘const output::ColorParams::ColorMode& output::Params::colorMode() const’:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:58:39: warning: returning reference to temporary [-Wreturn-local-addr]
58 | return m_colorParams.colorMode();
| ~~~~~~~~~~~~~~~~~~~~~~~^~
[ 28%] Building CXX object src/filters/output/CMakeFiles/output.dir/PictureZoneEditor.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Settings.h:28,
from /home/misha/Projects/scantailor-experimental/src/filters/output/PictureZoneEditor.cpp:27:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputImageParams.h:25,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Settings.h:29:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h: In member function ‘const output::ColorParams::ColorMode& output::Params::colorMode() const’:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:58:39: warning: returning reference to temporary [-Wreturn-local-addr]
58 | return m_colorParams.colorMode();
| ~~~~~~~~~~~~~~~~~~~~~~~^~
[ 28%] Building CXX object src/filters/output/CMakeFiles/output.dir/OnDemandPictureZoneEditor.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Settings.h:28,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OnDemandPictureZoneEditor.h:24,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OnDemandPictureZoneEditor.cpp:19:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputImageParams.h:25,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Settings.h:29:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h: In member function ‘const output::ColorParams::ColorMode& output::Params::colorMode() const’:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:58:39: warning: returning reference to temporary [-Wreturn-local-addr]
58 | return m_colorParams.colorMode();
| ~~~~~~~~~~~~~~~~~~~~~~~^~
[ 29%] Building CXX object src/filters/output/CMakeFiles/output.dir/FillZoneEditor.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Settings.h:28,
from /home/misha/Projects/scantailor-experimental/src/filters/output/FillZoneEditor.cpp:29:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputImageParams.h:25,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Settings.h:29:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h: In member function ‘const output::ColorParams::ColorMode& output::Params::colorMode() const’:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:58:39: warning: returning reference to temporary [-Wreturn-local-addr]
58 | return m_colorParams.colorMode();
| ~~~~~~~~~~~~~~~~~~~~~~~^~
[ 30%] Building CXX object src/filters/output/CMakeFiles/output.dir/DespeckleLevel.cpp.o
/home/misha/Projects/scantailor-experimental/src/filters/output/DespeckleLevel.cpp: In function ‘double output::despeckleLevelToFactor(DespeckleLevel)’:
/home/misha/Projects/scantailor-experimental/src/filters/output/DespeckleLevel.cpp:27:12: warning: enumeration value ‘DESPECKLE_CUSTOM’ not handled in switch [-Wswitch]
27 | switch (level)
| ^
[ 52%] Building CXX object src/dewarping/CMakeFiles/dewarping.dir/TextLineTracer.cpp.o
/home/misha/Projects/scantailor-experimental/src/dewarping/TextLineTracer.cpp: In static member function ‘static Grid<VecNT<2, float> > dewarping::TextLineTracer::calcGradient(const imageproc::GrayImage&, DebugImages*)’:
/home/misha/Projects/scantailor-experimental/src/dewarping/TextLineTracer.cpp:309:21: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]
309 | return std::move(grad);
| ~~~~~~~~~^~~~~~
/home/misha/Projects/scantailor-experimental/src/dewarping/TextLineTracer.cpp:309:21: note: remove ‘std::move’ call
/home/misha/Projects/scantailor-experimental/src/dewarping/TextLineTracer.cpp: In static member function ‘static Grid<float> dewarping::TextLineTracer::calcDirectionalDerivative(const Grid<VecNT<2, float> >&, const Grid<VecNT<2, float> >&)’:
/home/misha/Projects/scantailor-experimental/src/dewarping/TextLineTracer.cpp:341:21: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]
341 | return std::move(dir_deriv);
| ~~~~~~~~~^~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/dewarping/TextLineTracer.cpp:341:21: note: remove ‘std::move’ call
[ 52%] Building CXX object src/dewarping/CMakeFiles/dewarping.dir/TextLineSegmenter.cpp.o
/home/misha/Projects/scantailor-experimental/src/dewarping/TextLineSegmenter.cpp: In static member function ‘static dewarping::TextLineSegmenter::Result dewarping::TextLineSegmenter::process(const imageproc::AffineTransformedImage&, const std::shared_ptr<AcceleratableOperations>&, const TaskStatus&, DebugImages*)’:
/home/misha/Projects/scantailor-experimental/src/dewarping/TextLineSegmenter.cpp:169:21: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]
169 | return std::move(result);
| ~~~~~~~~~^~~~~~~~
/home/misha/Projects/scantailor-experimental/src/dewarping/TextLineSegmenter.cpp:169:21: note: remove ‘std::move’ call
/home/misha/Projects/scantailor-experimental/src/dewarping/TextLineSegmenter.cpp: In static member function ‘static dewarping::TextLineSegmenter::Result dewarping::TextLineSegmenter::processDownscaled(const imageproc::GrayImage&, const QPolygonF&, const std::shared_ptr<AcceleratableOperations>&, const TaskStatus&, DebugImages*)’:
/home/misha/Projects/scantailor-experimental/src/dewarping/TextLineSegmenter.cpp:356:21: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]
356 | return std::move(result);
| ~~~~~~~~~^~~~~~~~
/home/misha/Projects/scantailor-experimental/src/dewarping/TextLineSegmenter.cpp:356:21: note: remove ‘std::move’ call
[ 60%] Building CXX object src/zones/CMakeFiles/zones.dir/ZoneCreationInteraction.cpp.o
SIn file included from /home/misha/Projects/scantailor-experimental/src/zones/ZoneCreationInteraction.cpp:19:
/home/misha/Projects/scantailor-experimental/src/zones/ZoneCreationInteraction.h: In constructor ‘ZoneCreationInteraction::ZoneCreationInteraction(ZoneInteractionContext&, InteractionState&)’:
/home/misha/Projects/scantailor-experimental/src/zones/ZoneCreationInteraction.h:86:10: warning: ‘ZoneCreationInteraction::m_rectangularZoneType’ will be initialized after [-Wreorder]
86 | bool m_rectangularZoneType;
| ^~~~~~~~~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/zones/ZoneCreationInteraction.h:65:17: warning: ‘DragHandler ZoneCreationInteraction::m_dragHandler’ [-Wreorder]
65 | DragHandler m_dragHandler;
| ^~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/zones/ZoneCreationInteraction.cpp:34:1: warning: when initialized here [-Wreorder]
34 | ZoneCreationInteraction::ZoneCreationInteraction(
| ^~~~~~~~~~~~~~~~~~~~~~~
[ 63%] Building CXX object src/filters/fix_orientation/CMakeFiles/fix_orientation.dir/Filter.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/CommandLine.h:30,
from /home/misha/Projects/scantailor-experimental/src/filters/fix_orientation/Filter.cpp:39:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
[ 65%] Building CXX object src/filters/page_split/CMakeFiles/page_split.dir/ImageView.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/interaction/InteractionHandler.h:23,
from /home/misha/Projects/scantailor-experimental/src/ImageViewBase.h:23,
from /home/misha/Projects/scantailor-experimental/src/filters/page_split/ImageView.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/page_split/ImageView.cpp:19:
In destructor ‘virtual RefCountable::~RefCountable()’,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:51:20,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:47:10,
inlined from ‘void intrusive_unref(T&) [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:114:14,
inlined from ‘IntrusivePtr<T>::~IntrusivePtr() [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:151:24,
inlined from ‘page_split::ImageView::ImageView(const std::shared_ptr<AcceleratableOperations>&, const imageproc::AffineTransformedImage&, const ImagePixmapUnion&, const page_split::PageLayout&, const IntrusivePtr<ProjectPages>&, const ImageId&, bool, bool)’ at /home/misha/Projects/scantailor-experimental/src/filters/page_split/ImageView.cpp:81:1:
/home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:40:30: warning: ‘void operator delete(void*, std::size_t)’ called on pointer ‘((IntrusivePtr<ProjectPages>*)this)[151].IntrusivePtr<ProjectPages>::m_pObj’ with nonzero offset 16 [-Wfree-nonheap-object]
40 | virtual ~RefCountable() {}
| ^
In destructor ‘virtual RefCountable::~RefCountable()’,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:51:20,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:47:10,
inlined from ‘void intrusive_unref(T&) [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:114:14,
inlined from ‘IntrusivePtr<T>::~IntrusivePtr() [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:151:24,
inlined from ‘page_split::ImageView::~ImageView()’ at /home/misha/Projects/scantailor-experimental/src/filters/page_split/ImageView.cpp:85:1:
/home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:40:30: warning: ‘void operator delete(void*, std::size_t)’ called on pointer ‘((IntrusivePtr<ProjectPages>*)this)[151].IntrusivePtr<ProjectPages>::m_pObj’ with nonzero offset 16 [-Wfree-nonheap-object]
40 | virtual ~RefCountable() {}
| ^
[ 67%] Building CXX object src/filters/page_split/CMakeFiles/page_split.dir/Filter.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/CommandLine.h:30,
from /home/misha/Projects/scantailor-experimental/src/filters/page_split/Filter.cpp:39:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
[ 67%] Building CXX object src/filters/page_split/CMakeFiles/page_split.dir/OptionsWidget.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/PageSelectionProvider.h:22,
from /home/misha/Projects/scantailor-experimental/src/PageSelectionAccessor.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/page_split/OptionsWidget.h:31,
from /home/misha/Projects/scantailor-experimental/src/filters/page_split/OptionsWidget.cpp:19:
In destructor ‘virtual RefCountable::~RefCountable()’,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:51:20,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:47:10,
inlined from ‘void intrusive_unref(T&) [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:114:14,
inlined from ‘IntrusivePtr<T>::~IntrusivePtr() [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:151:24,
inlined from ‘page_split::OptionsWidget::~OptionsWidget()’ at /home/misha/Projects/scantailor-experimental/src/filters/page_split/OptionsWidget.cpp:77:1:
/home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:40:30: warning: ‘void operator delete(void*, std::size_t)’ called on pointer ‘((IntrusivePtr<ProjectPages>*)this)[29].IntrusivePtr<ProjectPages>::m_pObj’ with nonzero offset 16 [-Wfree-nonheap-object]
40 | virtual ~RefCountable() {}
| ^
[ 71%] Building CXX object src/filters/deskew/CMakeFiles/deskew.dir/Filter.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/CommandLine.h:30,
from /home/misha/Projects/scantailor-experimental/src/filters/deskew/Filter.cpp:35:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
[ 71%] Building CXX object src/filters/deskew/CMakeFiles/deskew.dir/Task.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/CommandLine.h:30,
from /home/misha/Projects/scantailor-experimental/src/filters/deskew/Task.cpp:70:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
[ 75%] Building CXX object src/filters/select_content/CMakeFiles/select_content.dir/Filter.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/CommandLine.h:30,
from /home/misha/Projects/scantailor-experimental/src/filters/select_content/Filter.cpp:36:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
[ 75%] Building CXX object src/filters/select_content/CMakeFiles/select_content.dir/ContentBoxFinder.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/CommandLine.h:30,
from /home/misha/Projects/scantailor-experimental/src/filters/select_content/ContentBoxFinder.cpp:62:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
[ 80%] Building CXX object src/filters/page_layout/CMakeFiles/page_layout.dir/Filter.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/CommandLine.h:30,
from /home/misha/Projects/scantailor-experimental/src/filters/page_layout/Filter.cpp:44:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
[ 80%] Building CXX object src/filters/page_layout/CMakeFiles/page_layout.dir/Task.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/CommandLine.h:30,
from /home/misha/Projects/scantailor-experimental/src/filters/page_layout/Task.cpp:41:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
[ 84%] Building CXX object src/CMakeFiles/scantailor-experimental.dir/scantailor-experimental_autogen/mocs_compilation.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/build/src/scantailor-experimental_autogen/EWIEGA46WW/../../../../src/AbstractCommand.h:22,
from /home/misha/Projects/scantailor-experimental/build/src/scantailor-experimental_autogen/EWIEGA46WW/../../../../src/FilterUiInterface.h:23,
from /home/misha/Projects/scantailor-experimental/build/src/scantailor-experimental_autogen/EWIEGA46WW/../../../../src/MainWindow.h:70,
from /home/misha/Projects/scantailor-experimental/build/src/scantailor-experimental_autogen/EWIEGA46WW/moc_MainWindow.cpp:10,
from /home/misha/Projects/scantailor-experimental/build/src/scantailor-experimental_autogen/mocs_compilation.cpp:3:
In destructor ‘virtual RefCountable::~RefCountable()’,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:51:20,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:47:10,
inlined from ‘void intrusive_unref(T&) [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:114:14,
inlined from ‘IntrusivePtr<T>::~IntrusivePtr() [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:151:24,
inlined from ‘OutOfMemoryDialog::~OutOfMemoryDialog()’ at /home/misha/Projects/scantailor-experimental/build/src/scantailor-experimental_autogen/EWIEGA46WW/../../../../src/OutOfMemoryDialog.h:31:7:
/home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:40:30: warning: ‘void operator delete(void*, std::size_t)’ called on pointer ‘((IntrusivePtr<ProjectPages>*)this)[49].IntrusivePtr<ProjectPages>::m_pObj’ with nonzero offset 16 [-Wfree-nonheap-object]
40 | virtual ~RefCountable() {}
| ^
[ 87%] Building CXX object src/CMakeFiles/scantailor-experimental.dir/OutOfMemoryDialog.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/FileNameDisambiguator.h:23,
from /home/misha/Projects/scantailor-experimental/src/OutputFileNameGenerator.h:22,
from /home/misha/Projects/scantailor-experimental/src/OutOfMemoryDialog.h:23,
from /home/misha/Projects/scantailor-experimental/src/OutOfMemoryDialog.cpp:19:
In destructor ‘virtual RefCountable::~RefCountable()’,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:51:20,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:47:10,
inlined from ‘void intrusive_unref(T&) [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:114:14,
inlined from ‘IntrusivePtr<T>::~IntrusivePtr() [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:151:24,
inlined from ‘IntrusivePtr<T>& IntrusivePtr<T>::operator=(const IntrusivePtr<T>&) [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:158:5,
inlined from ‘void OutOfMemoryDialog::setParams(const QString&, const IntrusivePtr<StageSequence>&, const IntrusivePtr<ProjectPages>&, const SelectedPage&, const OutputFileNameGenerator&)’ at /home/misha/Projects/scantailor-experimental/src/OutOfMemoryDialog.cpp:55:18:
/home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:40:30: warning: ‘void operator delete(void*, std::size_t)’ called on pointer ‘((IntrusivePtr<ProjectPages>*)this)[49].IntrusivePtr<ProjectPages>::m_pObj’ with nonzero offset 16 [-Wfree-nonheap-object]
40 | virtual ~RefCountable() {}
| ^
[ 89%] Building CXX object src/CMakeFiles/scantailor-experimental.dir/main.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/CommandLine.h:30,
from /home/misha/Projects/scantailor-experimental/src/main.cpp:37:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
[ 90%] Building CXX object src/CMakeFiles/scantailor-experimental-cli.dir/ConsoleBatch.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Settings.h:28,
from /home/misha/Projects/scantailor-experimental/src/ConsoleBatch.cpp:65:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputImageParams.h:25,
from /home/misha/Projects/scantailor-experimental/src/filters/output/OutputParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/filters/output/Settings.h:29:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h: In member function ‘const output::ColorParams::ColorMode& output::Params::colorMode() const’:
/home/misha/Projects/scantailor-experimental/src/filters/output/Params.h:58:39: warning: returning reference to temporary [-Wreturn-local-addr]
58 | return m_colorParams.colorMode();
| ~~~~~~~~~~~~~~~~~~~~~~~^~
[ 90%] Building CXX object src/CMakeFiles/scantailor-experimental-cli.dir/main-cli.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/filters/output/ColorParams.h:22,
from /home/misha/Projects/scantailor-experimental/src/CommandLine.h:30,
from /home/misha/Projects/scantailor-experimental/src/main-cli.cpp:25:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h: In constructor ‘output::ColorGrayscaleOptions::ColorGrayscaleOptions()’:
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:169:10: warning: ‘output::ColorGrayscaleOptions::m_whiteMargins’ will be initialized after [-Wreorder]
169 | bool m_whiteMargins;
| ^~~~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:158:12: warning: ‘double output::ColorGrayscaleOptions::m_wienerCoef’ [-Wreorder]
158 | double m_wienerCoef;
| ^~~~~~~~~~~~
/home/misha/Projects/scantailor-experimental/src/filters/output/ColorGrayscaleOptions.h:32:5: warning: when initialized here [-Wreorder]
32 | ColorGrayscaleOptions()
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/misha/Projects/scantailor-experimental/src/AbstractCommand.h:22,
from /home/misha/Projects/scantailor-experimental/src/BackgroundTask.h:22,
from /home/misha/Projects/scantailor-experimental/src/ConsoleBatch.h:28,
from /home/misha/Projects/scantailor-experimental/src/main-cli.cpp:26:
In destructor ‘virtual RefCountable::~RefCountable()’,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:51:20,
inlined from ‘void RefCountable::unref() const’ at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:47:10,
inlined from ‘void intrusive_unref(T&) [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:114:14,
inlined from ‘IntrusivePtr<T>::~IntrusivePtr() [with T = ProjectPages]’ at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:151:24,
inlined from ‘ConsoleBatch::~ConsoleBatch()’ at /home/misha/Projects/scantailor-experimental/src/ConsoleBatch.h:44:7,
inlined from ‘std::auto_ptr< <template-parameter-1-1> >::~auto_ptr() [with _Tp = ConsoleBatch]’ at /usr/include/c++/12/backward/auto_ptr.h:172:21:
/home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:40:30: warning: ‘void operator delete(void*, std::size_t)’ called on pointer ‘((IntrusivePtr<ProjectPages>*)this_3(D)->_M_ptr)[3].IntrusivePtr<ProjectPages>::m_pObj’ with nonzero offset 16 [-Wfree-nonheap-object]
40 | virtual ~RefCountable() {}
| ^
Hi @plzombie .
"Красивый" списочек. И частично к этому списку я руку приложил. Значительная часть сидит в src/filters/output.
@zvezdochiot Ладно. В альт-линуксе там списочек, кстати, выглядит не таким ужасающим. Это в debian настройки по умолчанию какие-то уж слишком жёсткие.
Можно в росреестр подавать заявку на совместимость с отечественной ОС🤣
@plzombie , что то эта "отечественная ОС" попахивает чем то средним между яндексом и РосНаном. Т.е. даже ежели она "отечественная", то непонятно о каком отечестве идёт речь.
PS: У таких старпёров, как я, слово отечественная всегда асоциируется с народом русским. В данном же случае ассоциация обратная.
Начну с
-Wreorder
Типовое вроде сообщение. В h-файле члены определены в одном порядке, а в cpp в списке инициализации конструктора - в другом. Visual Studio под виндой тоже на такое ругается. А если включить максимальный уровень предупреждений, там еще и не такая портяка вылазит.
У таких старпёров, как я, слово отечественная всегда асоциируется с народом русским.
Просто в русской традиции букву "ё" печатать как "е" для экономии чернил. На мониторе же для экономии энергии точки лучше, наоборот, включать, и писать полностью - "отёчественная". 🤣
@zvezdochiot @noobie-iv Да ладно вам. Это, наверное, действительно исконно русский, "НАШ", дистрибутив. Разрабатывает ООО "Базальт СПО", а не какой-то там кипрский офшор. Он от Red Hat откололся больше двадцати лет назад. Там уже и скрипты свои есть, и пакеты, и много чего модифицировано. Да и интерфейс мне честно нравится (не вот этот вот модный Gnome3/4), равно как и стабильная работа под виртуалкой
Я вас, кстати, поздравляю. Пакет с x86 версией Scantailor приняли в WinGet. Надо только доработать установщик, чтобы правильную версию и идентификатор отдавал
@zvezdochiot @noobie-iv можете мне подсказать, как вы сейчас в линуксе вообще авторизуетесь в git? Под виндой есть git credential manager, который поддерживает двухфакторную авторизацию. А тут - пароль приложения создавать?
Нашёл вот
Надо индивидуальный пароль создать. Главное вот этот Token(Classic) ещё ничего. Но в новом Fine Graned, на который нас пытаются пересадить, там около сотни прав доступа и все их надо руками проставлять😩
@plzombie , не знаю, как остальные, а у меня в настройках авторизации и SSH-ключ прописан, и GPG-ключ прописан. Правда вторым я не пользуюсь, ибо эксплуатация муторная. А вот по SSH данные туда-обратно совершенно спокойно гуляют. Создайте себе SSH-ключ, активируйте его в ssh-agent, а в конфигах git-ов поменяйте адреса реп с https-протокола на ssh-протокол.
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
PS: Про web-морду я уже писал, добавил addon в лису и с его помощью как то зашёл. Как? Сам не понял.
@zvezdochiot да у меня есть приложение. Получается, просто генерируешь в Developer Settings->Personal access tokens->Tokens (classic) себе индивидуальный пароль и его вводишь вместо основного
@plzombie , да я без понятия как это всё дерьмо работает. Для меня всё это просто конкретное МММ, то бишь разводилово. Я уж подумывал вообще валить с гитхаба, когда всё это увидел. Дураку же понятно, что никакую безопасность это дерьмо не делает, а лишь усложняет работу обычному пользователю.
Я под виндой сижу, вход через FF, плагин Authenticator. Когда вход выполнен - git тоже получает доступ. После этого работают и git-bash, и VSCode. Ничего больше не настраивал.
@noobie-iv у меня под виндой проще - Github app для телефона и git credentials manager (да, я прогнулся под корпорации и поставил приложение:)). А под линуксом я просто руками создал "Personal access token". По сути все эти плагины Authenticator-ы тем и заниманются, что создают токен, а потом его подсовывают вместо пароля.
С ssh я когда-то игрался. Но проще token вместо пароля создать (и просто тупо вместо пароля его вводишь, как раньше)
UPD: Github app, кстати, криворукие люди писали. Нельзя комментировать коммиты. Ты видишь, что кто-то его прокоментировал, ты нажимаешь на уведомление, а в ответ - ничего
Я вроде основные варнинги убрал. Там остался -Wmaybe-uninitialized в файле DewarpingImageTransform.cpp, по котором я вообще не понимаю, что там происходит. И второй варнинг - это -Wpessimizing-move, который я не смогу пофиксить в силу своей квалификации, так как я больше сишник и ничего не знаю про все эти std::move. А из справки ничего не понятно. Предлагаю пока отложить это дело
@plzombie say:
std::move
Это определённая когда то "модная" фитча работы с кучей. Полностью тебя поддерживаю. Я сам все std::min и std::max из цветных фильтров и порогов вынес. На кой мне они, есжели есть простой и понятный выбор ({})?{}:{};?
-Wpessimizing-move
Я простой инженер, и в плюсах не копенгаген. Но, насколько я знаю, move - это новый вид оптимизации, при передаче объектов, владеющих ресурами. В некоторых случаях, когда ресурс надо передать по цепочке, вызвается специальный конструктор перемещения, внутри которого просто переприсваивается указатель на ресурс, а не делаются лишние "выделим новую память, скопируем из старой, удалим старую". И вызов std::move - это подсказка компилятору, что этот объект - временный, и при копировании можно не копировать его ресурс, а забирать, потому что объект все равно удаляется.
А еще современные плюсы насобачились даже вообще пропускать вызовы конструкторов/деструкторов при возвращении переменной из функции (гуглить RVO-оптимизация). Видимо, в старых плюсах на возвращаемые значения надо было делать move, потому они по коду и раскиданы. А в современных компиляторах это наоборот, мешает оптимизации. Судя по типу предупреждения "pessimizing-move", тут оптимизация заблокировалась, и пошли лишние копирования с тормозами. В современных компиляторах достаточно просто возвращать результат, без move:
169: - return std::move(result); 169: +return result;
И потому же std::unique_ptr живет без конструктора копии - вместо него работает конструктор перемещения.
Кстати, студия на такое не ругается. Видимо, тут комплятор про себя матерится, и просто молча делает как надо.
-Wmaybe-uninitialized
Тут какая-то шаблонная магия, в которой я не разбираюсь. Но судя по сообщению, возможны баги с неинициализированной переменной. Деварпинг в этой версии - лучший из всех, но и он работает не идеально. Например, если его на эту книгу натравить: https://forum.dwg.ru/showpost.php?p=2046477&postcount=3713, то достаточно много страниц будут кривыми. Возможно, тут это предупреждение и вылазит - надо тестить. Может, это и не предупреждение даже, а реальная ошибка.
Я вообще, хоть и программист, но совершенно из другой обособленной области, и у нас тут абсолютно свой технологический стек. А c++ я учил ещё по книжкам pre-c++98. @noobie-iv спасибо, попробую разобраться хотя-бы с move
Я по книжке Страуструпа, по той, которой убить можно. Из открытого лучшее что видел по современным плюсам - курсы Константина Владимирова, МФТИ, на ютубе: Базовый курс C++ Магистерский курс C++
@zvezdochiot @noobie-iv возвращаясь к теме... В Fedora ругается на класс IntrusivePtr. Надо посмотреть, что это, и можно ли его на что-то заменить из стандарта.
@plzombie , а как именно ругается? Дай выхлоп посмотреть. (насколько я помню "это" связанно с сортировкой, а без сортировки ST - не ST).
Но за "сигнал" спасибо. Опять "умельцы" из GNU каких то грабель подбросили.
[ 63%] Building CXX object src/stages/page_split/CMakeFiles/page_split.dir/ImageView.cpp.o
In file included from /home/misha/Projects/scantailor-experimental/src/interaction/InteractionHandler.h:23,
from /home/misha/Projects/scantailor-experimental/src/ImageViewBase.h:23,
from /home/misha/Projects/scantailor-experimental/src/stages/page_split/ImageView.h:22,
from /home/misha/Projects/scantailor-experimental/src/stages/page_split/ImageView.cpp:19:
In destructor «virtual RefCountable::~RefCountable()»,
inlined from «void RefCountable::unref() const» at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:51:20,
inlined from «void RefCountable::unref() const» at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:47:10,
inlined from «void intrusive_unref(T&) [с T = ProjectPages]» at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:114:14,
inlined from «IntrusivePtr<T>::~IntrusivePtr() [с T = ProjectPages]» at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:151:24,
inlined from «page_split::ImageView::ImageView(const std::shared_ptr<AcceleratableOperations>&, const imageproc::AffineTransformedImage&, const ImagePixmapUnion&, const page_split::PageLayout&, const IntrusivePtr<ProjectPages>&, const ImageId&, bool, bool)» at /home/misha/Projects/scantailor-experimental/src/stages/page_split/ImageView.cpp:82:1:
/home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:40:30: предупреждение: «void operator delete(void*, std::size_t)» called on pointer «((IntrusivePtr<ProjectPages>*)this)[151].IntrusivePtr<ProjectPages>::m_pObj» with nonzero offset 16 [-Wfree-nonheap-object]
40 | virtual ~RefCountable() {}
| ^
In destructor «virtual RefCountable::~RefCountable()»,
inlined from «void RefCountable::unref() const» at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:51:20,
inlined from «void RefCountable::unref() const» at /home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:47:10,
inlined from «void intrusive_unref(T&) [с T = ProjectPages]» at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:114:14,
inlined from «IntrusivePtr<T>::~IntrusivePtr() [с T = ProjectPages]» at /home/misha/Projects/scantailor-experimental/src/foundation/IntrusivePtr.h:151:24,
inlined from «page_split::ImageView::~ImageView()» at /home/misha/Projects/scantailor-experimental/src/stages/page_split/ImageView.cpp:86:1:
/home/misha/Projects/scantailor-experimental/src/foundation/RefCountable.h:40:30: предупреждение: «void operator delete(void*, std::size_t)» called on pointer «((IntrusivePtr<ProjectPages>*)this)[151].IntrusivePtr<ProjectPages>::m_pObj» with nonzero offset 16 [-Wfree-nonheap-object]
40 | virtual ~RefCountable() {}
| ^
Там несколько одинаковых записей, меняется только место использования класса
@plzombie , фу, отлегло. Я думал ты ещё что то "нащупал". А на "это" да, ругается. И не зря ругается. Уж больно шальная на самом деле в STEX сортировка. На каких то этапах через костыли стабилизируется, а на каких то PageId завёрнут так, что нельзя его для стабилизации пользовать. Но ругается на всех этапах один чёрт.
@plzombie
IntrusivePtr можно ли его на что-то заменить из стандарта
По-моему, нет. Такое в стандарт забыли положить, потому оно и самописное. Разве что аналог, вроде, есть в бусте. Но пересадить всю программу на буст долго будет, там эти указатели повсюду.
Хороших учебников по указателям не видел. Везде, как в учебниках математики, "мы придумали вот такую хрень, а вы придумайте, куда ее засунуть."
Насколько я понимаю, указатели применены так:
-
unique. Один объект - один указатель. Когда указатель удаляется - он удаляет и управляемый объект.
- Для объектов, у которых гарантированно один владелец.
- Идиома PIMPL, когда у класса не куча полей, а один указатель на реализацию, где эти поля спрятаны. Этот pimpl - unique, потому что владеет им только класс-хозяин. Половина классов в ST прячет реализацию в PIMPL.
- Для объектов, к которым точно не будет обращений после уничтожения.
- Например, ThumbSequence в главном окне. Пока есть главное окно, гарантированно есть и окно эскизов, поэтому из любой функции главного окна можно безопасно обращаться к указателю на окно эскизов.
- Для объектов, у которых гарантированно один владелец.
-
intrusive. Один объект - много указателей.
В объект встроен счетчик указателей на объект. При копировании указателя счетчик растет, при удалении падает. Когда не остается указателей - счетчик нулевой, и тут объект сам себя удаляет. А пока есть хоть одна копия указателя - объект еще жив и гарантированно доступен через него.
Чтобы в каждом объекте, на который нужен указатель, не писать с нуля счетчики ссылок, увеличение/уменьшение и автоудаление, управление счетчиком вынесено в класс RefCountable, от которого надо наследоваться.
- Для объектов, у которых владельцев несколько.
- Например, ThumbnailCache в главном окне. В этот кеш лазают в фоновом потоке. А при смене фильтра старый кеш сносят, и создают новый, но в GUI-потоке. И бывает так, что фоновый поток обращается к кешу, который уже снесли в GUI. Если бы это был unique - фоновый поток вылетел бы из-за битого указателя. А с intrusive, пока хоть одна копия указателя болтается где-то в списках обработки фонового потока, старый кеш продолжит работать - например, генерировать запрошенные версии эскизов на будущее. А в GUI-потоке уже будет новый кеш, тоже рабочий.
- Для объектов, у которых владельцев несколько.
-
shared/weak Один объект - много shared указателей.
Shared-указатели совместно владеют объектом, и удаляют его, когда указателей не осталось. Счетчик shared-указателей хранится отдельно от объекта, в блоке, которым совместно управляют сами указатели. При копировании указателя shared-счетчик растет, при удалении падает. Когда удаляется последний из shared-указателей, счетчик нулевой, и указатель удаляет управляемый объект.
А еще можно создавать weak-указатели. Weak-указатели не владеют объектом, но видят, жив он еще или уже удален. Счетчик weak-указателей сидит там же, в общем блоке. Когда оба счетчика нули - не осталось ни shared, ни weak-указателя, и контрольный блок тоже удаляется. Если объект еще жив, по weak-указателю можно создать shared, и начать пользоваться объектом.
- Для объектов, у которых несколько хозяев, и которыми не нужно пользоваться, если хозяев больше нет.
-
Например, объекты обратного вызова CompletionHandler при запросе в кеш эскизов. Объект создается в GUI-потоке, и должен обновить эскиз. А загрузка эскизов идет в кеше в фоновом потоке. Бывает так, что кеш загрузил картинку для эскиза, а фильтр за это время поменяли, и эскиз уже удален.
Был бы unique - был бы вылет по битому указателю.
Был бы intrusive - ненужный эскиз все еще висел бы в памяти, и все равно не смог бы обновиться, потому что больше не виден в главном окне.
Тут в GUI-потоке объект создают через shared, а в фоновый поток кеша отдают через weak. Пока в GU есть хоть один shared - CompletionHandler жив и эскиз будет обновляться, но если shared не осталось - эскиз был удален. А фоновый поток кеша после загрузки эскиза проверяет weak. Если weak скажет, что эскиз еще жив - кеш присылает эскизу оповещение на обновление. А если эскиз уже удален - просто завершает работу: картинка для эскиза записана в файл на будущее, а обновление уже не требуется.
-
- Для объектов, у которых несколько хозяев, и которыми не нужно пользоваться, если хозяев больше нет.
Среди unique-intrusive-shared каждый следующий сложнее и тормознее предыдущего, поэтому использованы всегда минимально необходимые, а не везде просто shared.
@plzombie
-Wfree-nonheap-object
Судя по сообщению, где-то есть объект, который создан на стеке, а потом (возможно, по ошибке) завернут в IntrusivePtr. Указатель в своем деструкторе вызывает unref() объекта (унаследованный от RefCountable), который должен вызвать delete, потому что указатель должен создаваться из объектов, созданных через new.
Типа такого
{ // OK: heap object
ProjectPages* pages = new ProjectPages(); // count = 1
IntrusivePtr<ProjectPages> ptr(pages);
} // OK: ~ptr() ---> pages->unref() ---> count=0 ---> delete this ---> ~pages();
{ // ERROR: stack object
ProjectPages pages; // count = 1
IntrusivePtr<ProjectPages> ptr(&pages);
} // OK: ~pages()
// ERROR: ~ptr() ---> pages->unref() ---> count=0 ---> delete this ---> ~pages();
Вот ещё варнинги, при сборке в Fedora 41:
/run/build/scantailor-experimental/src/ThumbnailSequence.cpp: In member function ‘std::unique_ptr<ThumbnailSequence::CompositeItem> ThumbnailSequence::Impl::getCompositeItem(const ThumbnailSequence::Item*, const PageInfo&)’:
/run/build/scantailor-experimental/src/ThumbnailSequence.cpp:1551:76: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
1551 | std::unique_ptr<QGraphicsItem> thumb(std::move(getThumbnail(page_info)));
| ^
/run/build/scantailor-experimental/src/ThumbnailSequence.cpp:1551:76: note: remove ‘std::move’ call
/run/build/scantailor-experimental/src/ThumbnailSequence.cpp:1552:80: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
1552 | std::unique_ptr<LabelGroup> label_group(std::move(getLabelGroup(page_info)));
| ^
/run/build/scantailor-experimental/src/ThumbnailSequence.cpp:1552:80: note: remove ‘std::move’ call
Где тут temporary object - я не понимаю. Или это типа getThumbnail и getLabelGroup создают std::unique на стэке? Ну ок, я удалил этот std::move, оно даже скомпилировалось...
@plzombie say:
Ну ок, я удалил этот std::move, оно даже скомпилировалось...
Протестировал на материале ПубЛиб: ОлегГ: Два игрока на одном поле мозга. Полёт более чем нормальный.
PS: Как я понял std::move() применяется для экономии времени на копировании объекта. Экономия на "Эскизах"? Как то не очень я её заметил.
@plzombie say:
Вот ещё варнинги
Михаил, а ты можешь собрать инфу на каких форках семейства ST сборка современными компиляторами происходит "из коробки"? Вопросик тут возник.
@plzombie @zvezdochiot
etThumbnail и getLabelGroup создают std::unique на стэке
Как я понимаю, "copy elision" - это оптимизация возвращаемых значений в современных компиляторах. Совсем давно, когда из функции возвращался объект или структура, он сначала создавался на стеке вызванной функции, а потом копировался наружу (конструктор внутри -> оператор копирования -> конструктор копии снаружи; возможно, без копирования, это надо старые компиляторы искать и тестить).
Потом (c++11) придумали rvalue, и вместо копирования стали делать перемещение. Видимо, в эти времена написан ST. Там при возвращении из функций внутри и снаружи понаставлены move, чтобы заменить копирование более быстрым перемещением (конструктор внутри -> оператор перемещения -> перемещающий конструктор снаружи).
А сейчас компиляторы еще и возврат из функции оптимизируют (гуглить RVO, NRVO). С какой-то версии (14 или 17) это уже вроде как обязательно для компилятора. Теперь вызванная функция создает объект не у себя на стеке, а прямо на стеке вызывающей функции, в том месте, где он должен в конце концов оказаться. И получается единственный вызов - конструктор, безо всяких копий.
А если где влепить лишний move - это отламывает оптимизацию, принудительно вставляя создание лишних объектов и их перемещения. Move на возвратах мы уже вычищали, но видимо, остались еще недобитые. Но по идее, это надо в #if заворачивать по версии стандарта, если предполагать сборку на старых системах.
@zvezdochiot
на каких форках семейства ST сборка современными компиляторами происходит "из коробки"?
Под виндами? Я бы про все сказал "под звуки бубна". Под виндами нет стандартных библиотек и стандартных путей. Библиотеки надо сначала собрать. Тот же Qt я не помню с какой попытки собрать смог. И в мелких библиотеках тоже проблемы были - libjpeg, например, под линуксы явно была, и для сборки под виндами требовала правки, потому ее на turbo заменить проще вышло. А вот openmp, например, с майкрософтовским компилятором молча ставится, и я про нее вообще узнал только когда обсуждали проблемы сборки под мак.
Но под виндами способ распространения другой - тут собранную программу принято передавать. Поэтому проблемы сборки пользователям не сильно интересны. Программы попроще вообще со времен Win95 работают, безо всяких повторных компиляций.
А вообще я OpenCV собирал разок посмотреть, интересу ради - так она все зависимости в процессе автоматом с гитхаба подтягивает, и собирает самостоятельно, прежде чем самой собраться. Если уж в перфекционизм упарываться, надо и в ST сборку так же оформить.
Или, как минимум, прекомпиляцию заголовков включить. Под виндами это раза в 3-4 сборку ускоряет.
@zvezdochiot Тут, боюсь, ни в каких. В scantailor-experimental можно поставить зависимости через vcpkg, потом сделать
mkdir build
cd build
cmake -G "NMake Makefiles" -D "CMAKE_TOOLCHAIN_FILE=C:\Path\To\vcpkg\scripts\buildsystems\vcpkg.cmake" -D CMAKE_BUILD_TYPE=Release ..
nmake
В остальных примерно так же.
@noobie-iv std::move везде я понаставил, чтобы сэмулировать std::auto через std::unique