2014-07-03 16:32 GMT+03:00 Christian Dávid <christian-da...@web.de>: > Am Mittwoch, 2. Juli 2014, 21:43:29 schrieb Fernando Vilas: >> I think I remember reading that for either Qt5 or KF5, that C++11 was a >> requirement. Even as far back as RHEL5, you could get the gcc44 toolchain >> installed and use "-std=c++0x" for most of what they use. Based on the >> state of affairs with GCC, LLVM, and MSVC, I have no problem with c++11 >> being a requirement. This is further supported if I am remembering >> correctly above. > > Both, Qt5 and KF5 do not require C++11. I do not about KF5, but Qt5 has C++11 > support. If you build it with C++11 enabled some classes contain constexpr, > move constructors, initialization lists and other nice improvements. > > But I do not know if we can make use of it, as the distributions decide if the > shared libraries are compiled with C++11 enabled or not. > > Anyway we should enable C++11 because *we* can make our lives easier with it. > I am sure KF5 will require it in near future (Qt probably not). Also I want it > enabled because it is more fun for me :) > > With the compilers you are right, most features are supported by the main > compilers for all systems (gcc, clang and MS Visual Studio) for a long time. > > Also I think it is questionable if someone who has a distribution which is > several years old is interested in compiling a new (and quite untested) > version of KMyMoney — which will be released at the end of 2014. She/he needs > to compile huge packages like Qt5, KF5 and further dependencies as well. Who > is willing to do that cannot be stopped with an old compiler.
I've started to do some profiling again and found another argument for the case that enabling C++11 would be a great benefit to the project. 1. We could really benefit from move semantics, our API is a perfect fit for that (think about all the MyMoney* objects) For example while loading a file the method which takes most CPU cycles in the file storage object is MyMoneySeqAccessMgr::price [1]. You might ask why is that, well... read [2] (I know it's long) and you'll notice that the compiler can't perform RVO [3]. We need to improve the performance of the code we write but we should not sacrifice the readability to do this. We can fix stuff using our current C++03 but to do it properly without hurting readability I would suggest switching to C++11. 2. We could benefit from auto, range-based for and other stuff to improve readability Line like [4] would simply go away. 3. It would allow us (the developers) to learn new stuff and write better code Although I'm a C++ developer I didn't write a single line of C++11 code yet. We should be learning and having fun while working in our free time. So, I totally agree with you Chris, let's enable C++11 in KMyMoney, I know that KDevelop already needs C++11 so it shouldn't restrict us from distributing KMyMoney in any way. I'll take care of the necessary build system changes. Regards, Cristian [1] https://projects.kde.org/projects/extragear/office/kmymoney/repository/revisions/master/entry/kmymoney/mymoney/storage/mymoneyseqaccessmgr.cpp#L1773 [2] http://www.drdobbs.com/move-constructors/184403855 [3] http://en.wikipedia.org/wiki/Return_value_optimization [4] https://projects.kde.org/projects/extragear/office/kmymoney/repository/revisions/master/entry/kmymoney/mymoney/storage/mymoneyseqaccessmgr.cpp#L1568 > > Greetings > Chris > _______________________________________________ > KMyMoney-devel mailing list > KMyMoney-devel@kde.org > https://mail.kde.org/mailman/listinfo/kmymoney-devel _______________________________________________ KMyMoney-devel mailing list KMyMoney-devel@kde.org https://mail.kde.org/mailman/listinfo/kmymoney-devel