After some discussion, there seems to be broad support for adding C++11 language features to SeaBreeze. This is a precursor to some future enhancements that may require the use of now-standard mutex and thread libraries.
One aspect of C++11 that is lacking in SeaBreeze is consistent integer word sizing. For instance, even within just the top-level SpectrometerFeatureAdapter, integration time is represented as a long (assuming unsigned 32-bit) when getting the integration time limits, but an unsigned long when setting it. int is used both as a status code but also a spectrum length. Using it for a status code is probably fine since these will generally fit in a single byte but the compiler is allowed to optimize to the machine word size; but for a spectrum length, a particular range is implicitly assumed.
It would be cleaner, and likely more consistent, if these were represented as uint32_t, uint16_t, etc. provided by stdint.h which is supported by most modern compilers (including VS2013 and newer). For this tracker, conversion to stdint.h types is the main focus.
It would probably be cleaner still to use typedefs for integration times (and so on) throughout, but ultimately, these should be anchored in integer types that are guaranteed to be consistent across all platforms.
For older compilers (particularly older Visual Studios) it will be necessary to include a safe-to-redistribute stdint.h, and if possible, point to it in their project files. This may require a change to the scripts that keep those projects up-to-date.