Hi,
While writing a new driver, I've experimented a bit with C++11 default
non-static data
member initialization.
Unfortunately the following
class C
{
double m_adfGeotransform[6]{0,1,0,0,0,1}; // breaks VS 2013
};
which works with conformant C+11 compilers breaks on VS 2013 with
error C2797:
list initialization inside member initializer list or non-static data member
initializer is not implemented
Similary, double m_adfGeotransform[6] = {0,1,0,0,0,1} also breaks.
This is discussed in
https://stackoverflow.com/questions/27741521/error-c2797-list-initialization-inside-member-initializer-list
https://blogs.msdn.microsoft.com/vcblog/2014/08/19/the-future-of-non-static-data-member-initialization/
The issue has been solved in VS2015
A workaround is to use std::array and non-static data member initialization
with equal initializer and explicit type
in front of initialized values
class C
{
std::array<double,6> m_adfGeotransform =
std::array<double,6>{{0,1,0,0,0,1}}; // OK VS 2013
};
(For the same reason as above, direct initialization
std::array<double,6> m_adfGeotransform{{0,1,0,0,0,1}}; // breaks VS 2013
)
Given this and other issues found, we might revisit at some point supporting
VS2013. Would
still be good to try to have it for GDAL 2.3, but we can perhaps drop it
afterwards.
Even
--
Spatialys - Geospatial professional services
http://www.spatialys.com
_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev