Possibly not in the default c++ language mode, but check out -fwhole-program-vtables. It can be a useful option in cases where all relevant inheritance relationships are known at compile time.
Which is good, but may not apply. I have an application where I can't do that because we support plugins and so a couple classes will get overridden outside of the compilation (this was in hindsight a bad decision, but too late to change now). Meanwhile most classes will never be overriden and so I use final to saw that. We are also a multi-repo project (which despite the hype I think is better for us than mono-repo), another reason why -f-whole-program-vtables would be difficult to use - but we could make it work with effort if it wasn't for the plugins.
I think you can do bound functions if you do callee-cleanup, then your intermediate bound trampolines can just jmp and you don't end up with (too many) weird problems. But it means that the final return address ends up at the bottom of the stack, rather than at the top, like it would with a conventional push/call system.
In any case it looks like cdecl is out of the question.
Although Python will be used to convey the material, I have been assured that much of the content from SICP will be preserved.
I recognize now that CS61A is a fusion of sorts: an exciting modern treatment of traditionally intellectual material. This change reflects concerns about the difficulty of SICP, the popularity of Python, and a general lack of interest on the part of students and teachers in Scheme. Fair enough. I think this is the best possible solution for an introductory course, but that's just my opinion.
I want to reiterate that I mean Berkeley or its professors no disrespect, and that I only raised this issue because I was concerned about a potentially drastic shift in the curriculum.
I can't begin to thank you all for your comments, criticism, emails, and interest. It's made a world of difference.
Reading the last email was gratifying and cathartic. I used to have experiences like this on Windows all of the time. There's some savage pleasure in knowing that Bill Gates had to put up with stuff like this too.
Even after applying your patch I had a little trouble getting everything to link properly on x86_64 Fedora (14). I ended up manually tweaking my make files after running qmake.
Changed the LIBS line (in MLDemos/Makefile, _AlgorithmPlugins/<n>/Makefile.<n>, _IOPlugins/<n>/Makefile.<n>) to:
I think the issue we're all having stems from the structural redesign of opencv 2.2. Everything has been split up into smaller headers, and the functionality is similarly separated into different shared libraries. It's a more logical code structure, but it means that we need to have different makefile rules for pre-2.2 and 2.2+ code.
As far as -lhighgui -lcv -lcxcore is concerned, those libraries don't exist on my machine anymore. "highgui" is "/usr/lib/libopencv_highgui.so", and so on. That would explain why my 'fix' didn't work for you.
you might need to add
#include <opencv2/legacy/legacy.hpp>
#include <opencv2/legacy/compat.hpp>
to get those
I haven't gotten around to porting it to opencv2.2 so the patch is very welcome!
Yeah, the install(_script).sh are to allow deployment on the Mac (which wants absolute paths to libraries). They will need to be changed to direct to the local libraries in case you need them... (hopefully a new version of MacDeployQt will appear at some point to take care of all that)
https://reviews.llvm.org/D16821