These errors seem to ask for a header file but it is not logical that x.cpp needs to reference x.h. I am chasing a circle of adding a .h file and having already referenced errors and removing the .h and finding this bundle off errors.
C2143: syntax error : missing ';' before '<'
C4430: missing type specifier - int assumed. Note: C++ does not support default-int
I did not notice that - and good question. The code had #ifdef _set_h, it resulted in grayed out text, I did not understand what it did so looked it up and changed to the ifndef that you saw.
Removing the header guard did not resolve the errors.
no, there is not a set.h header - shouldn't the .cpp file automatically associate with the .h file and if it is referenced will cause a circular reference
The reason being is that because set.h is pasted into set.cpp at the very beginning, _set_h will have been defined. The ifdef preprocessor directive will see that _set_h is already defined and include the code at the bottom. Also, make sure you have all of the #include "..." files from set.h or else you'll never be able to compile it.
Edit: If you're using Code::Blocks, to turn off the gray out option for #if's, go to:
Settings -> Editor -> General settings -> Other options -> Interpret #if, #else, and #endif to grey out inactive preprocessor-code
It's probably because this code was written three years ago. I see it #includes foreach which is now standard. A lot of the stuff could just be obsolete. Maybe if you tried running it with an old compiler like that that is included with bloodshed, you'd be able to get it to run. Question is, why do you need it?
With all the new updates and standards coming out, I wouldn't be surprised if the code has become obsolete. That's the only thing I can think of since I believe the code worked when it was last used, why else would it stop working?
a class library was installed when I last ran the code and I have since changed hardrives and changed from VS2005 to VS2008; I reassembled the library from the individual class files
With the update from 2005 to 2008 there could have also been a lot of changes in the compilers. As for your errors you're getting, it's hard to know everything thats going on since I can't compile the code, your errors aren't very descriptive as from where they're coming from, or what template they're referring to.
I did some research and figured out that the private/set.cpp file is treated like a .h file so it is the same as if the function is in a single header file