|
|
Home » Developing U++ » U++ Developers corner » What is the highest version of U++ that does not require C++11 ?
|
|
Re: What is the highest version of U++ that does not require C++11 ? [message #46708 is a reply to message #46706] |
Sat, 16 July 2016 21:15 |
|
kov_serg
Messages: 37 Registered: August 2008 Location: Russia
|
Member |
|
|
I rebuild from source last stable version (9251) and disable upgrade. Now it works with out C++11.
And upgrade window should have button select all. Checking thousands of comboboxes is masochism.
I've found the black date it is 22 Feb 2016 ( https://github.com/ultimatepp/mirror/commit/84ed89f483818832 c9811ceaafefd79f7d2ce665 )
+#ifndef CPP_11
+#error This version of U++ REQUIRED C++11
+#endif
My opinios transition into C++11 is a big strategic mistake. Until there is no modules there is no worthwhile reason to use it.
New features will couse even more problems in furute. Also it ruins backward compatibility with old machines. Old versions works even on i486 with windows95 and old suse distros.
For new computers there are a lot of better tools.
ps: all prebuild binaries for ubuntu has problems. I don't know why. But if rebuild from source it works normal.
[Updated on: Sat, 16 July 2016 21:18] Report message to a moderator
|
|
|
Re: What is the highest version of U++ that does not require C++11 ? [message #46709 is a reply to message #46708] |
Sat, 16 July 2016 21:30 |
|
Klugier
Messages: 1082 Registered: September 2012 Location: Poland, Kraków
|
Senior Contributor |
|
|
Hello kov_serg,
Quote:
My opinios transition into C++11 is a big strategic mistake. Until there is no modules there is no worthwhile reason to use it.
New features will couse even more problems in furute. Also it ruins backward compatibility with old machines. Old versions works even on i486 with windows95 and old suse distros.
I think transient to C++11/C++14 is the only way to keep upp competitive to other C++ frameworks. Keeping old standard only for backwards compatibility is not an option for future of U++. Please notice that several features that is available in newer standards like auto and lambdas allows us to develop U++ faster and easier. It is also good value for framework users code.
Moreover, sometimes ago Mirek created branch uppclassic that contains code that is compatibility with old standard. I think we should add this in our documentation - where find old sources. Mirek can you give us path to this branch - I cannot find it on github?
Quote:
For new computers there are a lot of better tools.
Can you specific what kind of competitors do you mean? Now days, we have got still many features to offer them.
Backing to prebuilds on Ubuntu - probably dolik.rc knows the problem. The issue was mention in another topic.
Sincerely,
Klugier
U++ - one framework to rule them all.
[Updated on: Sat, 16 July 2016 21:33] Report message to a moderator
|
|
|
|
Re: What is the highest version of U++ that does not require C++11 ? [message #46711 is a reply to message #46710] |
Sat, 16 July 2016 23:37 |
|
Klugier
Messages: 1082 Registered: September 2012 Location: Poland, Kraków
|
Senior Contributor |
|
|
Hello,
To obtain the latest C++03 sources from U++ repo you can type:
svn checkout svn://www.ultimatepp.org/upp/classic/uppsrc classic_uppsrc
Please notice that latest C++11 version is located at
svn checkout svn://www.ultimatepp.org/upp/trunk/uppsrc
I will keep in mind your post and I think we should solve this problem somehow - like putting classic/uppsrc to tar/zip etc. If you have any ideas - please let us know about it. Please notice that maintaining two branches is expensive for us. Only critical bugs should land in C++03 branch.
Sincerely and thanks,
Klugier
U++ - one framework to rule them all.
[Updated on: Sat, 16 July 2016 23:40] Report message to a moderator
|
|
|
Re: What is the highest version of U++ that does not require C++11 ? [message #46713 is a reply to message #46705] |
Sun, 17 July 2016 12:36 |
mr_ped
Messages: 825 Registered: November 2005 Location: Czech Republic - Praha
|
Experienced Contributor |
|
|
I don't even see, how you can have problem with C++11 source.
If your own source is C++03 only, so set your compiler to build upp with C++11 (14), and your code with C++03, and link it. But you should migrate to C++11 like yesterday, it's so much better.
edit: about increased productivity
For me certainly C++14 helps a lot. "auto" and "constexpr" I use daily. Unified {} initializers syntax helps me a lot, so I don't have to remember all the special quirky ways how to initialize some things to value. Things like "for (auto i : {0, 1, 2})" *reads* good to me. I don't use lambdas much, can't get used to their syntax yet. But just the basic stuff plus official move semantics were enough for me to switch right away in 2011, now it's 5 years later and basically every decent platform has full C++11 compiler, and almost complete C++14 one.
[Updated on: Sun, 17 July 2016 12:42] Report message to a moderator
|
|
|
|
|
Re: What is the highest version of U++ that does not require C++11 ? [message #46813 is a reply to message #46808] |
Tue, 16 August 2016 11:18 |
cbpporter
Messages: 1406 Registered: September 2007
|
Ultimate Contributor |
|
|
Also, the issue of "just use classic" is not as simple.
It is not a question of using the latest compilers and using C++ pre 11 to compile "legacy" code. All done, right?
It is the issue that these new compilers WILL NOT COMPILE old code. I, and it appears a lot of people on the forum, have ton of issues when switching, with weird errors, mostly related to deleted members and what not.
I have a job to to and honestly can't be bothered to even google these errors. I have zero interest in C++ 11x and if the compilers can't handle my old code, well then I just won't use the compiler.
I will try to fix these errors, months or years down the line, when I have free time.
Until then, sometimes I can use some workarounds and will still try to make a concentrated effort to make my code compatible with Visual Studio 2014.
|
|
|
|
Re: What is the highest version of U++ that does not require C++11 ? [message #46840 is a reply to message #46818] |
Fri, 26 August 2016 13:42 |
cbpporter
Messages: 1406 Registered: September 2007
|
Ultimate Contributor |
|
|
Quote:Yup, still can't compile anything, not even the command line application.
Reverted to pre C++11x versions.
Scratch that. After deleting all previous version and a fresh install, I managed to get something that only has a couple of different error for the command line project, so might get it to compile.
One is:
BuildMethod.cpp(24): error C2676: binary '<<=': 'Upp::String' does not define this operator or a conversion to a type acceptable t
o the predefined operator
The other one is:
error C2280: 'Block::Block(const Block &)': attempting to reference a deleted function
Block is:
class Block: Moveable<Block> {
public:
WithDeepCopy<VectorMap<String, Variable>> Vars;
int Temps;
Block() {
Temps = 0;
}
rval_default(Block);
};
So how does one handle this with the new C++?
Anyway, these two problems are fixable.
But I think it is fair to say that the C++ 11x integration did not work at all well. Almost killed U++ for me.
[Updated on: Fri, 26 August 2016 13:59] Report message to a moderator
|
|
|
|
|
Re: What is the highest version of U++ that does not require C++11 ? [message #46861 is a reply to message #46860] |
Tue, 30 August 2016 17:03 |
cbpporter
Messages: 1406 Registered: September 2007
|
Ultimate Contributor |
|
|
So, I used the new U++ for only a day in console mode (the GUI projects are not ported yet), and here are my observation:
1. C++ 11x is manageable, but there needs to be a document with common problems and their solutions. My GUI project is still full of copy issues.
2. The new Core is cleaner and better organized. I like it. It is in great shape. Maybe need a bit more work, but it is really minor.
3. The debugger is absolutely bad. It has never been this bad. It totally fails at recursive debugging, messing up the context fully. Strangely, this goes for my old install too, so I guess I never noticed it before.
4. The "automatic setup" now works, but needs some feedback. You click it and nothing happens. I had an install without TDM, manually copied over TDM, clicked automatic setup, TDM was not detected. I had to copy the old *.bm files and restart TheIDE and it worked.
5. MSC14/visual Studio 2015 is still detected as "MSC15". It is not 15. It is 14. MSC15 is the 2016 version that is not fully out yet and has a TBA on the release date. Might be even VS 2017. Easy fix.
6. MSC11 won't compile .rc, but I guess that version isn't maintained anymore.
7. Target file override is no longer stored based on package. This makes TheIDE borderline unusable for me. Every single project has an override for it's resulting .exe and executables can't work outside their "install" folder.
One day is not enough to asses the status, but things are finally looking good. Some of the problems look very solvable to me. I think I can fully migrate to the latest U++ and only have to worry about a couple of forked controls because of bugs.
[Updated on: Tue, 30 August 2016 17:52] Report message to a moderator
|
|
|
|
|
|
|
Re: What is the highest version of U++ that does not require C++11 ? [message #47887 is a reply to message #46705] |
Tue, 18 April 2017 21:45 |
aftershock
Messages: 143 Registered: May 2008
|
Experienced Member |
|
|
I have similar problem
I have current stable IDE..(version 10804). Windows....VIsual studio 17 64 bit
Why is it calling a copy constructor at map.h 212
threads[free_index].Run ( THISBACK5 ( execute_bot_in_background, bot1, a, params, result_mode, stat_group_id ) );
main.cpp(1502): error C2280: 'Upp::VectorMap<Upp::String,double>::VectorMap(const Upp::VectorMap<Upp::String,double> &)': attempting to reference
a deleted function
d:\upp\uppsrc\core\Map.h(212): note: compiler has generated 'Upp::VectorMap<Upp::String,double>::VectorMap' here
d:\upp\uppsrc\core\Map.h(212): note: 'Upp::VectorMap<Upp::String,double>::VectorMap(const Upp::VectorMap<Upp::String,double> &)': function was implicitly deleted becau
se a base class invokes a deleted or inaccessible function 'Upp::AMap<K,T,Upp::Vector<T>>::AMap(const Upp::AMap<K,T,Upp::Vector<T>> &)'
with
[
K=Upp::String,
T=double
]
d:\upp\uppsrc\core\Map.h(190): note: 'Upp::AMap<K,T,Upp::Vector<T>>::AMap(const Upp::AMap<K,T,Upp::Vector<T>> &)': function was implicitly deleted because a data membe
r invokes a deleted or inaccessible function 'Upp::Index<Upp::String>::Index(const Upp::Index<Upp::String> &)'
with
[
K=Upp::String,
T=double
]
d:\upp\uppsrc\core\Index.h(210): note: 'Upp::Index<Upp::String>::Index(const Upp::Index<Upp::String> &)': function was implicitly deleted because 'Upp::Index<Upp::Stri
ng>' has a user-defined move constructor
]
[Updated on: Tue, 18 April 2017 21:59] by Moderator Report message to a moderator
|
|
|
Goto Forum:
Current Time: Fri Sep 20 19:20:26 CEST 2024
Total time taken to generate the page: 0.03350 seconds
|
|
|