[gil::io] Dependent Name issue with VS2015 Update3
Hi all,
using the new gil::io on gil's develop branch I get a compilation error
with Visual Studio 2015 Update 3.
When trying to read a tiff image:
#include <string>
#include
On 07/01/17 22:05, Christian Henning via Boost wrote:
Hi all,
using the new gil::io on gil's develop branch I get a compilation error with Visual Studio 2015 Update 3.
When trying to read a tiff image:
#include <string>
#include
#include using namespace std; using namespace boost::gil;
int main() {
rgba8_image_t img; read_image( string(), img, tiff_tag() );
return 0; }
I get an error:
error C2951: template declarations are only permitted at global, namespace, or class scope
The problem seems to be with
https://github.com/boostorg/gil/blob/develop/include/boost/gil/extension/io/...
Can someone please tell me if my issue is a compiler issue or simply a syntax error.
Looks like a compiler bug to me. You can try replacing `get_property_f::operator()` with a regular named function. Same with `set_property`.
Hi Andrey,
On Sat, Jul 1, 2017 at 3:51 PM, Andrey Semashev
On 07/01/17 22:05, Christian Henning via Boost wrote:
Hi all,
using the new gil::io on gil's develop branch I get a compilation error with Visual Studio 2015 Update 3.
When trying to read a tiff image:
#include <string>
#include
#include using namespace std; using namespace boost::gil;
int main() {
rgba8_image_t img; read_image( string(), img, tiff_tag() );
return 0; }
I get an error:
error C2951: template declarations are only permitted at global, namespace, or class scope
The problem seems to be with
https://github.com/boostorg/gil/blob/develop/include/boost/ gil/extension/io/formats/tiff/device.hpp#L143
Can someone please tell me if my issue is a compiler issue or simply a syntax error.
Looks like a compiler bug to me. You can try replacing `get_property_f::operator()` with a regular named function. Same with `set_property`.
Thanks Andrey. Stefan Seefeld had the same inclination. I'll try to rename operator() and see if that fixes the issue. Regards, Christian
On 01.07.2017 18:42, Christian Henning via Boost wrote:
Hi Andrey,
On Sat, Jul 1, 2017 at 3:51 PM, Andrey Semashev
wrote: Looks like a compiler bug to me. You can try replacing `get_property_f::operator()` with a regular named function. Same with `set_property`.
Thanks Andrey. Stefan Seefeld had the same inclination. I'll try to rename operator() and see if that fixes the issue.
Note that the problem isn't the (name of the) operator(). It's the fact that it is a function / operator template, within a class template, which requires the "template" keyword to disambiguate the syntax (gotta love C++...). I believe the suggestion is to fuse the two into one (i.e. make a single function template with two template parameters, rather than a function template within a class template, or something like that... An entirely different approach would be to simply punt and skip that particular set of tiff tests with the buggy compiler. (That would require the tests to be separated into separate executables, though, so the others would be able to compile and run.) Stefan -- ...ich hab' noch einen Koffer in Berlin...
participants (3)
-
Andrey Semashev
-
Christian Henning
-
Stefan Seefeld