Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-80939

Qt3D doesn't build with -std=c++11

    XMLWordPrintable

Details

    • Linux/X11

    Description

      I'm trying to build Qt 5.14.0 in c++11 mode.

      In Qt3D std::cbegin() and std::cend() are used, which are, AFAIK C++14.

      I get the following compiler errors:

      qt-everywhere-src-5.14.0/qt3d/src/render/materialsystem/shaderbuilder.cpp: In member function ‘virtual void Qt3DRender::Render::ShaderBuilder::syncFromFrontEnd(const Qt3DCore::QNode*, bool)’:
      qt-everywhere-src-5.14.0/qt3d/src/render/materialsystem/shaderbuilder.cpp:290:25: error: ‘cbegin’ is not a member of ‘std’
      {{ for (auto it = std::cbegin(shaderTypesToGetters), end = std::cend(shaderTypesToGetters); it != end; ++it) {}}
      {{ ^~~~~~}}
      qt-everywhere-src-5.14.0/qt3d/src/render/materialsystem/shaderbuilder.cpp:290:25: note: suggested alternative: ‘begin’
      {{ for (auto it = std::cbegin(shaderTypesToGetters), end = std::cend(shaderTypesToGetters); it != end; ++it) {}}
      {{ ^~~~~~}}
      {{ begin}}
      qt-everywhere-src-5.14.0/qt3d/src/render/materialsystem/shaderbuilder.cpp:290:100: error: ‘end’ was not declared in this scope
      {{ for (auto it = std::cbegin(shaderTypesToGetters), end = std::cend(shaderTypesToGetters); it != end; ++it) {}}{{}}

       

      qt-everywhere-src-5.14.0/qt3d/src/render/renderers/opengl/renderer/renderviewbuilder.cpp: In member function ‘void Qt3DRender::Render::{anonymous}::SyncRenderViewPreCommandUpdate::operator()()’:
      qt-everywhere-src-5.14.0/qt3d/src/render/renderers/opengl/renderer/renderviewbuilder.cpp:323:29: error: ‘cbegin’ is not a member of ‘std’
      {{ auto eIt = std::cbegin(renderableEntities);}}
      {{ ^~~~~~}}
      qt-everywhere-src-5.14.0/qt3d/src/render/renderers/opengl/renderer/renderviewbuilder.cpp:323:29: note: suggested alternative: ‘begin’
      {{ auto eIt = std::cbegin(renderableEntities);}}
      {{ ^~~~~~}}
      {{ begin}}
      qt-everywhere-src-5.14.0/qt3d/src/render/renderers/opengl/renderer/renderviewbuilder.cpp:324:36: error: ‘cend’ is not a member of ‘std’
      {{ const auto eEnd = std::cend(renderableEntities);}}
      {{ ^~~~}}
      qt-everywhere-src-5.14.0/qt3d/src/render/renderers/opengl/renderer/renderviewbuilder.cpp:324:36: note: suggested alternative: ‘end’
      {{ const auto eEnd = std::cend(renderableEntities);}}

       

       

      Replacing cend() and cbegin() with begin() and end() makes it compile.

       

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            mkrus Mike Krus
            neundorf Alexander Neundorf
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes