Hi,
When compiling, I get lots of C4530 warnings from STL headers: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc.
This led me to following questions:
1. Does protobuf relies on any STL feature, that does not work properly without exceptions?
2. Are exceptions properly handled in internal protobuf implementation? What if some object used by the library, such as istream, throws? Is there any exception safety guarantee and does protobuf need to be built with exception support?
3. I was not able to find any piece of documentation on error-handling policy in protobuf. Can I assume that protobuf functions never throw errors, (may be except for generated by runtime (e.g. badalloc))? I checked the source code and did not find throw statements, however can it be changed later or is it a part of library contract?
4. There is a difference in default behavior between flags passed to cl by nmake and devenv. For example, the latter by default uses /EHsc handling mode and thus C4530 warnings are not produced. CMakeList.txt does not account for this difference. Which set of cl flags is recommended for building protobuf?