Le code suivant C++ OpenCL compile très bien avec g ++ -c no_x.cpp:OpenCL types de vecteurs: Impossible d'accéder aux composants x, y filles fusionnées, avec z 11 C++ permis
// no_x.cpp
#include <CL/cl.h>
void func() {
cl_double2 xy;
xy.x = 1.0;
xy.y = 2.0;
}
Mais avec C++ - 11 a permis le même fichier donne des erreurs:
$ g++ -std=c++11 -c no_x.cpp
nox.cpp: In function ‘void func()’:
nox.cpp:7:7: error: ‘union cl_double2’ has no member named ‘x’
xy.x = 1.0;
^
nox.cpp:8:7: error: ‘union cl_double2’ has no member named ‘y’
xy.y = 2.0;
^
Je peux contourner avec xy.s [0], xy.s [1] etc, mais c'est laid (ce qui est sans doute pourquoi OpenCL offre la .x, .y composants). Qu'est-ce qui se passe avec C++ 11 qui en est la cause? Puis-je en général ne pas compiler OpenCL avec C++ 11?
xy.s [0] est le moyen le plus portable, c'est moche mais ça marche. – DarkZeros