Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. error: C2057: expected constant expression
Forum Update on Monday, May 27th 2025

error: C2057: expected constant expression

Scheduled Pinned Locked Moved Unsolved General and Desktop
28 Posts 5 Posters 8.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    Dr. No
    wrote on 25 Mar 2018, 15:32 last edited by Dr. No
    #1

    I'm trying to build a project orignally made on top of mingw but now we need to switch to MSVC++ (because a specific debugging library only supports that) but to my surprise, compiling that code even on new C++ version/Qt result in the error:

    error: C2057: expected constant expression
    

    The error is not part of my own source code rather Qt itself, from qmetatype.h header, so I have no idea how fix. I assumed it was missing C++11 flag, so I added CONFIG += c++11 nothing changed. Then I tried to more specific and added QMAKE_CXXFLAGS += /std:c++14 to .pro file. Same error. The line of error is:

    struct CapabilitiesImpl<T, std::random_access_iterator_tag>
    { enum { IteratorCapabilities = RandomAccessCapability | BiDirectionalCapability | ForwardCapability }; };
    

    NOTE: Since I was getting cl not found error, I do star the Qt creator from a bat file like this:

    call "C:\Program Files (x86)\Microsoft Visual
    Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86
    "C:\Qt-MSVC\Qt5.7.1\Tools\QtCreator\bin\qtcreator.exe"
    

    How can I fix that?

    EDIT

    Complete error message (the error is the same, with another Qt version I've tried, to see if anything changes):

    C:\Qt-MSVC\Qt5.5.0\5.5\msvc2013\include\QtCore\qmetatype.h:944: see
    reference to class template instantiation
    'QtMetaTypePrivate::CapabilitiesImpl<QList<QVariant>,std::random_access_iterator_tag>'
    being compiled
    C:\Qt-MSVC\Qt5.5.0\5.5\msvc2013\include\QtCore\qmetatype.h:1015: see
    reference to class template instantiation
    'QtMetaTypePrivate::ContainerAPI<T>' being compiled with [
    T=QVariantList ] C:\Qt-MSVC\Qt5.5.0\5.5\msvc2013\include\QtCore\qvariant.h:711: see
    reference to function template instantiation
    'QtMetaTypePrivate::QSequentialIterableImpl::QSequentialIterableImpl<QVariantList>(const
    T *)' being compiled with [
    T=QVariantList ]

    K 1 Reply Last reply 25 Mar 2018, 17:51
    0
    • D Dr. No
      25 Mar 2018, 15:32

      I'm trying to build a project orignally made on top of mingw but now we need to switch to MSVC++ (because a specific debugging library only supports that) but to my surprise, compiling that code even on new C++ version/Qt result in the error:

      error: C2057: expected constant expression
      

      The error is not part of my own source code rather Qt itself, from qmetatype.h header, so I have no idea how fix. I assumed it was missing C++11 flag, so I added CONFIG += c++11 nothing changed. Then I tried to more specific and added QMAKE_CXXFLAGS += /std:c++14 to .pro file. Same error. The line of error is:

      struct CapabilitiesImpl<T, std::random_access_iterator_tag>
      { enum { IteratorCapabilities = RandomAccessCapability | BiDirectionalCapability | ForwardCapability }; };
      

      NOTE: Since I was getting cl not found error, I do star the Qt creator from a bat file like this:

      call "C:\Program Files (x86)\Microsoft Visual
      Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86
      "C:\Qt-MSVC\Qt5.7.1\Tools\QtCreator\bin\qtcreator.exe"
      

      How can I fix that?

      EDIT

      Complete error message (the error is the same, with another Qt version I've tried, to see if anything changes):

      C:\Qt-MSVC\Qt5.5.0\5.5\msvc2013\include\QtCore\qmetatype.h:944: see
      reference to class template instantiation
      'QtMetaTypePrivate::CapabilitiesImpl<QList<QVariant>,std::random_access_iterator_tag>'
      being compiled
      C:\Qt-MSVC\Qt5.5.0\5.5\msvc2013\include\QtCore\qmetatype.h:1015: see
      reference to class template instantiation
      'QtMetaTypePrivate::ContainerAPI<T>' being compiled with [
      T=QVariantList ] C:\Qt-MSVC\Qt5.5.0\5.5\msvc2013\include\QtCore\qvariant.h:711: see
      reference to function template instantiation
      'QtMetaTypePrivate::QSequentialIterableImpl::QSequentialIterableImpl<QVariantList>(const
      T *)' being compiled with [
      T=QVariantList ]

      K Offline
      K Offline
      kshegunov
      Moderators
      wrote on 25 Mar 2018, 17:51 last edited by
      #2

      That piece of code is quite correct. What is the complete error (with paths, lines and such)?

      Read and abide by the Qt Code of Conduct

      D 2 Replies Last reply 25 Mar 2018, 20:41
      1
      • K kshegunov
        25 Mar 2018, 17:51

        That piece of code is quite correct. What is the complete error (with paths, lines and such)?

        D Offline
        D Offline
        Dr. No
        wrote on 25 Mar 2018, 20:41 last edited by
        #3

        @kshegunov check out the post update

        1 Reply Last reply
        0
        • K kshegunov
          25 Mar 2018, 17:51

          That piece of code is quite correct. What is the complete error (with paths, lines and such)?

          D Offline
          D Offline
          Dr. No
          wrote on 25 Mar 2018, 20:56 last edited by
          #4

          @kshegunov cl is this compiler: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\bin\Hostx86\x86\cl.exe is this the correct one, meant to be used with Qt 5.7.1?

          K 1 Reply Last reply 25 Mar 2018, 23:37
          0
          • D Dr. No
            25 Mar 2018, 20:56

            @kshegunov cl is this compiler: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\bin\Hostx86\x86\cl.exe is this the correct one, meant to be used with Qt 5.7.1?

            K Offline
            K Offline
            kenchan
            wrote on 25 Mar 2018, 23:37 last edited by kenchan
            #5

            @Dr.-No
            I see reference to 2 Qt versions in your post Qt 5.7.1 in your text and Qt 5.5.0 ???
            if you look here you will see that Qt 5.5 does not support the Vs 2017 compiler yet same for Qt. 5.7.1. maybe this is the issue?
            If you use the Vs 2017 IDE maybe you can set set the target to a lower one if you have that one installed, don't know if you can do that using Qt Creator to build though.

            D 1 Reply Last reply 26 Mar 2018, 02:02
            2
            • K kenchan
              25 Mar 2018, 23:37

              @Dr.-No
              I see reference to 2 Qt versions in your post Qt 5.7.1 in your text and Qt 5.5.0 ???
              if you look here you will see that Qt 5.5 does not support the Vs 2017 compiler yet same for Qt. 5.7.1. maybe this is the issue?
              If you use the Vs 2017 IDE maybe you can set set the target to a lower one if you have that one installed, don't know if you can do that using Qt Creator to build though.

              D Offline
              D Offline
              Dr. No
              wrote on 26 Mar 2018, 02:02 last edited by
              #6

              @kenchan I've tried a older version, 5.5.0 just to see if it could work. The error messages edited on my post (part of update) I copied from there. Hence the two diferente versions. But it did not work with either version and result in same error.

              K 1 Reply Last reply 26 Mar 2018, 02:22
              0
              • D Dr. No
                26 Mar 2018, 02:02

                @kenchan I've tried a older version, 5.5.0 just to see if it could work. The error messages edited on my post (part of update) I copied from there. Hence the two diferente versions. But it did not work with either version and result in same error.

                K Offline
                K Offline
                kenchan
                wrote on 26 Mar 2018, 02:22 last edited by kenchan
                #7

                @Dr.-No well yes, but the higher compiler version might still be the issue in both cases.
                if you scroll to the bottom of the linked page i gave you it shows the compatible tools for each Qt 5 version.

                D 1 Reply Last reply 26 Mar 2018, 16:08
                2
                • K kenchan
                  26 Mar 2018, 02:22

                  @Dr.-No well yes, but the higher compiler version might still be the issue in both cases.
                  if you scroll to the bottom of the linked page i gave you it shows the compatible tools for each Qt 5 version.

                  D Offline
                  D Offline
                  Dr. No
                  wrote on 26 Mar 2018, 16:08 last edited by
                  #8

                  @kenchan So for Qt 5.7.1, the cl is Windows-Windows_10-x86-MSVC2015 I must use this visual studio 2015, right?

                  I've tried it already, download a 6gb isntallation and change my bat to the following:

                  call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
                  "C:\Qt-MSVC\Qt5.7.1\Tools\QtCreator\bin\qtcreator.exe"
                  
                  and I get the same error...
                  
                  K 1 Reply Last reply 26 Mar 2018, 16:35
                  0
                  • D Dr. No
                    26 Mar 2018, 16:08

                    @kenchan So for Qt 5.7.1, the cl is Windows-Windows_10-x86-MSVC2015 I must use this visual studio 2015, right?

                    I've tried it already, download a 6gb isntallation and change my bat to the following:

                    call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
                    "C:\Qt-MSVC\Qt5.7.1\Tools\QtCreator\bin\qtcreator.exe"
                    
                    and I get the same error...
                    
                    K Offline
                    K Offline
                    kshegunov
                    Moderators
                    wrote on 26 Mar 2018, 16:35 last edited by
                    #9

                    I think you're doing the thing backwards.
                    See what visual studio you already have (from the first post it seems VS2017- C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\...), then from the Qt maintenance tool select a Qt version that provides you a binary distribution for that compiler, i.e. Qt >= 5.9 msvc2017-x86 and install it, possibly install the 64 bit binaries msvc2017-x86_x64 as well.
                    Then start Qt Creator (no need for call ....) and configure the kit for that Qt version and this compiler.
                    To get the debugger you will also need to install CDB from MS debugging tools package.

                    Read and abide by the Qt Code of Conduct

                    D 1 Reply Last reply 26 Mar 2018, 19:02
                    1
                    • K kshegunov
                      26 Mar 2018, 16:35

                      I think you're doing the thing backwards.
                      See what visual studio you already have (from the first post it seems VS2017- C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\...), then from the Qt maintenance tool select a Qt version that provides you a binary distribution for that compiler, i.e. Qt >= 5.9 msvc2017-x86 and install it, possibly install the 64 bit binaries msvc2017-x86_x64 as well.
                      Then start Qt Creator (no need for call ....) and configure the kit for that Qt version and this compiler.
                      To get the debugger you will also need to install CDB from MS debugging tools package.

                      D Offline
                      D Offline
                      Dr. No
                      wrote on 26 Mar 2018, 19:02 last edited by
                      #10

                      @kshegunov I had VS 2017 instealled already before I need to use MSVC++ compiler with Qt. I was using mingw before but I needed to switch to MSVC++ because I have to use a debugging library that only supports MSVC++ debugg symbols. So I installed Qt with MSVC++ when I went to compile, that error begun. I use call to call the vcvarsall.bat file within my batch script, without the bat doesn't work.

                      K 1 Reply Last reply 26 Mar 2018, 19:13
                      0
                      • D Dr. No
                        26 Mar 2018, 19:02

                        @kshegunov I had VS 2017 instealled already before I need to use MSVC++ compiler with Qt. I was using mingw before but I needed to switch to MSVC++ because I have to use a debugging library that only supports MSVC++ debugg symbols. So I installed Qt with MSVC++ when I went to compile, that error begun. I use call to call the vcvarsall.bat file within my batch script, without the bat doesn't work.

                        K Offline
                        K Offline
                        kshegunov
                        Moderators
                        wrote on 26 Mar 2018, 19:13 last edited by kshegunov
                        #11

                        @Dr.-No said in error: C2057: expected constant expression:

                        So I installed Qt with MSVC++

                        Please explain exactly what you did. There's no Qt with MSVC, there're a number of distributions of the Qt library compiled with different versions of the MS compiler, and what compiler you have will govern which exact distribution of Qt you will need.

                        I use call to call the vcvarsall.bat file within my batch script, without the bat doesn't work.

                        You can start Qt Creator without ever needing to have an installed compiler. I don't understand why you call the bat script before starting the IDE. What you need is, as I wrote, to configure the toolchain for your compiler, not start the IDE with the visual studio environment.

                        Read and abide by the Qt Code of Conduct

                        D 1 Reply Last reply 26 Mar 2018, 20:46
                        0
                        • D Offline
                          D Offline
                          Dr. No
                          wrote on 26 Mar 2018, 20:19 last edited by
                          #12
                          This post is deleted!
                          1 Reply Last reply
                          0
                          • K kshegunov
                            26 Mar 2018, 19:13

                            @Dr.-No said in error: C2057: expected constant expression:

                            So I installed Qt with MSVC++

                            Please explain exactly what you did. There's no Qt with MSVC, there're a number of distributions of the Qt library compiled with different versions of the MS compiler, and what compiler you have will govern which exact distribution of Qt you will need.

                            I use call to call the vcvarsall.bat file within my batch script, without the bat doesn't work.

                            You can start Qt Creator without ever needing to have an installed compiler. I don't understand why you call the bat script before starting the IDE. What you need is, as I wrote, to configure the toolchain for your compiler, not start the IDE with the visual studio environment.

                            D Offline
                            D Offline
                            Dr. No
                            wrote on 26 Mar 2018, 20:46 last edited by
                            #13

                            @kshegunov I downloaded the Qt Creator from this link, installed, opened my project but when I went to compile I got a cl not found error. So I search on google about the error and found that I should run vcvarsall.bat x86 to set up the needed varialbles. I did that and went to compile again, this time, the cl error was gone but then I got the error, title of this thread. Does make sense to configure the toolchain within the IDE but it didn't work. In fact, I saw alot of people running that script before using Qt Creator IDE, hence the need of this bat.

                            K 1 Reply Last reply 26 Mar 2018, 23:06
                            0
                            • D Dr. No
                              26 Mar 2018, 20:46

                              @kshegunov I downloaded the Qt Creator from this link, installed, opened my project but when I went to compile I got a cl not found error. So I search on google about the error and found that I should run vcvarsall.bat x86 to set up the needed varialbles. I did that and went to compile again, this time, the cl error was gone but then I got the error, title of this thread. Does make sense to configure the toolchain within the IDE but it didn't work. In fact, I saw alot of people running that script before using Qt Creator IDE, hence the need of this bat.

                              K Offline
                              K Offline
                              kshegunov
                              Moderators
                              wrote on 26 Mar 2018, 23:06 last edited by
                              #14

                              @Dr.-No said in error: C2057: expected constant expression:

                              In fact, I saw alot of people running that script before using Qt Creator IDE, hence the need of this bat.

                              I haven't seen or done that, it may work or not, can't say. What I usually do is follow the Qt Creator manual on configuring the compilers and just put the VC init script in the proper box, that is if creator has failed to detect the compiler automatically ...

                              Read and abide by the Qt Code of Conduct

                              D 1 Reply Last reply 27 Mar 2018, 01:12
                              0
                              • K kshegunov
                                26 Mar 2018, 23:06

                                @Dr.-No said in error: C2057: expected constant expression:

                                In fact, I saw alot of people running that script before using Qt Creator IDE, hence the need of this bat.

                                I haven't seen or done that, it may work or not, can't say. What I usually do is follow the Qt Creator manual on configuring the compilers and just put the VC init script in the proper box, that is if creator has failed to detect the compiler automatically ...

                                D Offline
                                D Offline
                                Dr. No
                                wrote on 27 Mar 2018, 01:12 last edited by
                                #15

                                @kshegunov Qt doesn't fail to detect the compiler but it give the cl command not found error, like this: https://stackoverflow.com/questions/8800361/cl-is-not-recognized-as-an-internal-or-external-command

                                The only thing which makes the error go away was that VS batch script to set up the proper paths in the system environment's variables.

                                K 1 Reply Last reply 27 Mar 2018, 01:34
                                0
                                • D Dr. No
                                  27 Mar 2018, 01:12

                                  @kshegunov Qt doesn't fail to detect the compiler but it give the cl command not found error, like this: https://stackoverflow.com/questions/8800361/cl-is-not-recognized-as-an-internal-or-external-command

                                  The only thing which makes the error go away was that VS batch script to set up the proper paths in the system environment's variables.

                                  K Offline
                                  K Offline
                                  kenchan
                                  wrote on 27 Mar 2018, 01:34 last edited by
                                  #16

                                  @Dr.-No So is everything now good to go for you then?

                                  D 1 Reply Last reply 27 Mar 2018, 01:54
                                  0
                                  • K kenchan
                                    27 Mar 2018, 01:34

                                    @Dr.-No So is everything now good to go for you then?

                                    D Offline
                                    D Offline
                                    Dr. No
                                    wrote on 27 Mar 2018, 01:54 last edited by
                                    #17

                                    @kenchan No. I'm with same error... I solved the cl error before create this thread. Once this compiled, I got expected constant expression error.

                                    K 1 Reply Last reply 27 Mar 2018, 02:10
                                    0
                                    • D Dr. No
                                      27 Mar 2018, 01:54

                                      @kenchan No. I'm with same error... I solved the cl error before create this thread. Once this compiled, I got expected constant expression error.

                                      K Offline
                                      K Offline
                                      kenchan
                                      wrote on 27 Mar 2018, 02:10 last edited by
                                      #18

                                      @Dr.-No Oh dear :-(.
                                      OK so just to clarify where you are now when you get this error...
                                      which Qt are you now building against?
                                      which version of Visual Studio are you now building with?
                                      are you using the QT Creator IDE to build the project?
                                      are you using Visual Studio IDE to build the project?

                                      D 1 Reply Last reply 27 Mar 2018, 02:16
                                      0
                                      • K kenchan
                                        27 Mar 2018, 02:10

                                        @Dr.-No Oh dear :-(.
                                        OK so just to clarify where you are now when you get this error...
                                        which Qt are you now building against?
                                        which version of Visual Studio are you now building with?
                                        are you using the QT Creator IDE to build the project?
                                        are you using Visual Studio IDE to build the project?

                                        D Offline
                                        D Offline
                                        Dr. No
                                        wrote on 27 Mar 2018, 02:16 last edited by
                                        #19

                                        @kenchan This is really bad, I have no idea why I'm getting this error. :( I'm downloading 5.10.1 to see if it works. Hope it's something has been fixed.

                                        which Qt are you now building against?

                                        Qt creator 4.2.0 and Qt 5.7.1

                                        which version of Visual Studio are you now building with?

                                        Visual studio community 2017

                                        are you using the QT Creator IDE to build the project?

                                        yes, as mentioned, version 4.2.0

                                        are you using Visual Studio IDE to build the project?

                                        nope... as it Qt project (written using mingw) I have only used Qt creator IDE.

                                        K 1 Reply Last reply 27 Mar 2018, 02:22
                                        0
                                        • D Dr. No
                                          27 Mar 2018, 02:16

                                          @kenchan This is really bad, I have no idea why I'm getting this error. :( I'm downloading 5.10.1 to see if it works. Hope it's something has been fixed.

                                          which Qt are you now building against?

                                          Qt creator 4.2.0 and Qt 5.7.1

                                          which version of Visual Studio are you now building with?

                                          Visual studio community 2017

                                          are you using the QT Creator IDE to build the project?

                                          yes, as mentioned, version 4.2.0

                                          are you using Visual Studio IDE to build the project?

                                          nope... as it Qt project (written using mingw) I have only used Qt creator IDE.

                                          K Offline
                                          K Offline
                                          kenchan
                                          wrote on 27 Mar 2018, 02:22 last edited by
                                          #20

                                          @Dr.-No Thank you for clarifying that :-). Please post back here the results when using Qt 5.10.1.
                                          I might have a Qt 5.7.1 around here somewhere :-)

                                          D 1 Reply Last reply 27 Mar 2018, 02:30
                                          0

                                          1/28

                                          25 Mar 2018, 15:32

                                          • Login

                                          • Login or register to search.
                                          1 out of 28
                                          • First post
                                            1/28
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved