[Bug 1955044] Re: [SRU] /usr/include/glibmm-2.4/glibmm/variant.h:956:24: error: expected unqualified-id before ‘)’ token (with GCC 11 in C++20 mode)

Jeremy Bicha 1955044 at bugs.launchpad.net
Sun Feb 13 07:39:56 UTC 2022


** Changed in: glibmm2.4 (Ubuntu)
       Status: New => Fix Released

** Also affects: glibmm2.4 (Ubuntu Impish)
   Importance: Undecided
       Status: New

** Changed in: glibmm2.4 (Ubuntu Impish)
       Status: New => Triaged

** Description changed:

- There are compilation errors when I try to include the <glibmm.h> header under C++20 and run default compiler, GCC 11.
- This is reproducible in Ubuntu 21.10 (Impish Indri) or Ubuntu devel (Jammy Jellyfish) but not in Ubuntu 21.04 (Impish Indri) or Debian unstable. And this is effecting building of the telegram-desktop package.
+ Impact
+ ======
+ It's not possible to build using the <glibmm.h> header under C++20 with the default compiler, GCC 11. This is interfering with being able to build telegram-desktop.
  
- mymedia at barberry:~$ g++ -x c++ -std=gnu++20 -include glibmm.h - <<< 'int main(){}' `pkg-config --cflags --libs glibmm-2.4` -o /dev/null
+ This was fixed for Ubuntu 22.04 LTS with 2.66.1
+ 
+ Demonstration of the Issue
+ ==========================
+ $ g++ -x c++ -std=gnu++20 -include glibmm.h - <<< 'int main(){}' `pkg-config --cflags --libs glibmm-2.4` -o /dev/null
  In file included from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
                   from /usr/include/glibmm-2.4/glibmm/arrayhandle.h:21,
                   from /usr/include/glibmm-2.4/glibmm.h:92,
                   from <command-line>:
  /usr/include/glibmm-2.4/glibmm/variant.h:956:24: error: expected unqualified-id before ‘)’ token
    956 |   Variant<VariantBase>();
        |                        ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1017:25: error: expected unqualified-id before ‘)’ token
   1017 |   Variant< Variant<T> >();
        |                         ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1070:26: error: expected unqualified-id before ‘)’ token
   1070 |   Variant<Glib::ustring>();
        |                          ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1240:24: error: expected unqualified-id before ‘)’ token
   1240 |   Variant<std::string>();
        |                        ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1286:30: error: expected unqualified-id before ‘)’ token
   1286 |   Variant< std::pair<K, V> >()
        |                              ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1335:29: error: expected unqualified-id before ‘)’ token
   1335 |   Variant< std::vector<T> >()
        |                             ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1404:41: error: expected unqualified-id before ‘)’ token
   1404 |   Variant< std::vector<Glib::ustring> >();
        |                                         ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1530:39: error: expected unqualified-id before ‘)’ token
   1530 |   Variant< std::vector<std::string> >();
        |                                       ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1606:29: error: expected unqualified-id before ‘)’ token
   1606 |   Variant< std::map<K, V> >()
        |                             ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1679:33: error: expected unqualified-id before ‘)’ token
   1679 |   Variant<std::tuple<Types...>>()
        |                                 ^
  In file included from /usr/include/glibmm-2.4/glibmm/variant.h:1742,
                   from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
                   from /usr/include/glibmm-2.4/glibmm/arrayhandle.h:21,
                   from /usr/include/glibmm-2.4/glibmm.h:92,
                   from <command-line>:
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:23:17: error: expected unqualified-id before ‘)’ token
     23 |   Variant<bool>()
        |                 ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:66:26: error: expected unqualified-id before ‘)’ token
     66 |   Variant<unsigned char>()
        |                          ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:109:19: error: expected unqualified-id before ‘)’ token
    109 |   Variant<gint16>()
        |                   ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:152:20: error: expected unqualified-id before ‘)’ token
    152 |   Variant<guint16>()
        |                    ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:195:19: error: expected unqualified-id before ‘)’ token
    195 |   Variant<gint32>()
        |                   ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:244:20: error: expected unqualified-id before ‘)’ token
    244 |   Variant<guint32>()
        |                    ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:287:19: error: expected unqualified-id before ‘)’ token
    287 |   Variant<gint64>()
        |                   ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:330:20: error: expected unqualified-id before ‘)’ token
    330 |   Variant<guint64>()
        |                    ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:373:19: error: expected unqualified-id before ‘)’ token
    373 |   Variant<double>()
        |                   ^
  In file included from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
                   from /usr/include/glibmm-2.4/glibmm/arrayhandle.h:21,
                   from /usr/include/glibmm-2.4/glibmm.h:92,
                   from <command-line>:
  /usr/include/glibmm-2.4/glibmm/variant.h:1751:1: error: no declaration matches ‘Glib::Variant<Glib::Variant<T> >::Variant()’
   1751 | Variant< Variant<T> >::Variant()
        | ^~~~~~~~~~~~~~~~~~~~~
  In file included from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
                   from /usr/include/glibmm-2.4/glibmm/arrayhandle.h:21,
                   from /usr/include/glibmm-2.4/glibmm.h:92,
                   from <command-line>:
  /usr/include/glibmm-2.4/glibmm/variant.h:1026:12: note: candidate is: ‘Glib::Variant<Glib::Variant<T> >::Variant(GVariant*, bool)’
   1026 |   explicit Variant< Variant<T> >(GVariant* castitem, bool take_a_reference = false);
        |            ^~~~~~~~~~~~~~~~~~~~~
  /usr/include/glibmm-2.4/glibmm/variant.h:1009:7: note: ‘class Glib::Variant<Glib::Variant<T> >’ defined here
   1009 | class Variant< Variant<T> > : public VariantContainerBase
        |       ^~~~~~~~~~~~~~~~~~~~~
  
- [Test Plan]
+ Test Plan
+ =========
  Run the following two terminal commands in Bash:
  1. sudo apt-get satisfy libglibmm-2.4-dev 'build-essential | g++'
  2. g++ -x c++ -std=gnu++20 -include glibmm.h - <<< 'int main(){}' `pkg-config --cflags --libs glibmm-2.4` -o /dev/null
  
  Make sure the latter command produced no output and ended with zero exit
  code.
  
- [Where problems could occur]
+ Where problems could occur
+ ===========================
  The proposed patch only modifies C++ headers. It may affect only building other packages from source or developer experience.

-- 
You received this bug notification because you are a member of Ubuntu
Sponsors Team, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/1955044

Title:
  [SRU] /usr/include/glibmm-2.4/glibmm/variant.h:956:24: error: expected
  unqualified-id before ‘)’ token (with GCC 11 in C++20 mode)

Status in glibmm2.4 package in Ubuntu:
  Fix Released
Status in glibmm2.4 source package in Impish:
  Triaged

Bug description:
  Impact
  ======
  It's not possible to build using the <glibmm.h> header under C++20 with the default compiler, GCC 11. This is interfering with being able to build telegram-desktop.

  This was fixed for Ubuntu 22.04 LTS with 2.66.1

  Demonstration of the Issue
  ==========================
  $ g++ -x c++ -std=gnu++20 -include glibmm.h - <<< 'int main(){}' `pkg-config --cflags --libs glibmm-2.4` -o /dev/null
  In file included from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
                   from /usr/include/glibmm-2.4/glibmm/arrayhandle.h:21,
                   from /usr/include/glibmm-2.4/glibmm.h:92,
                   from <command-line>:
  /usr/include/glibmm-2.4/glibmm/variant.h:956:24: error: expected unqualified-id before ‘)’ token
    956 |   Variant<VariantBase>();
        |                        ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1017:25: error: expected unqualified-id before ‘)’ token
   1017 |   Variant< Variant<T> >();
        |                         ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1070:26: error: expected unqualified-id before ‘)’ token
   1070 |   Variant<Glib::ustring>();
        |                          ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1240:24: error: expected unqualified-id before ‘)’ token
   1240 |   Variant<std::string>();
        |                        ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1286:30: error: expected unqualified-id before ‘)’ token
   1286 |   Variant< std::pair<K, V> >()
        |                              ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1335:29: error: expected unqualified-id before ‘)’ token
   1335 |   Variant< std::vector<T> >()
        |                             ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1404:41: error: expected unqualified-id before ‘)’ token
   1404 |   Variant< std::vector<Glib::ustring> >();
        |                                         ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1530:39: error: expected unqualified-id before ‘)’ token
   1530 |   Variant< std::vector<std::string> >();
        |                                       ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1606:29: error: expected unqualified-id before ‘)’ token
   1606 |   Variant< std::map<K, V> >()
        |                             ^
  /usr/include/glibmm-2.4/glibmm/variant.h:1679:33: error: expected unqualified-id before ‘)’ token
   1679 |   Variant<std::tuple<Types...>>()
        |                                 ^
  In file included from /usr/include/glibmm-2.4/glibmm/variant.h:1742,
                   from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
                   from /usr/include/glibmm-2.4/glibmm/arrayhandle.h:21,
                   from /usr/include/glibmm-2.4/glibmm.h:92,
                   from <command-line>:
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:23:17: error: expected unqualified-id before ‘)’ token
     23 |   Variant<bool>()
        |                 ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:66:26: error: expected unqualified-id before ‘)’ token
     66 |   Variant<unsigned char>()
        |                          ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:109:19: error: expected unqualified-id before ‘)’ token
    109 |   Variant<gint16>()
        |                   ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:152:20: error: expected unqualified-id before ‘)’ token
    152 |   Variant<guint16>()
        |                    ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:195:19: error: expected unqualified-id before ‘)’ token
    195 |   Variant<gint32>()
        |                   ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:244:20: error: expected unqualified-id before ‘)’ token
    244 |   Variant<guint32>()
        |                    ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:287:19: error: expected unqualified-id before ‘)’ token
    287 |   Variant<gint64>()
        |                   ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:330:20: error: expected unqualified-id before ‘)’ token
    330 |   Variant<guint64>()
        |                    ^
  /usr/include/glibmm-2.4/glibmm/variant_basictypes.h:373:19: error: expected unqualified-id before ‘)’ token
    373 |   Variant<double>()
        |                   ^
  In file included from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
                   from /usr/include/glibmm-2.4/glibmm/arrayhandle.h:21,
                   from /usr/include/glibmm-2.4/glibmm.h:92,
                   from <command-line>:
  /usr/include/glibmm-2.4/glibmm/variant.h:1751:1: error: no declaration matches ‘Glib::Variant<Glib::Variant<T> >::Variant()’
   1751 | Variant< Variant<T> >::Variant()
        | ^~~~~~~~~~~~~~~~~~~~~
  In file included from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:23,
                   from /usr/include/glibmm-2.4/glibmm/arrayhandle.h:21,
                   from /usr/include/glibmm-2.4/glibmm.h:92,
                   from <command-line>:
  /usr/include/glibmm-2.4/glibmm/variant.h:1026:12: note: candidate is: ‘Glib::Variant<Glib::Variant<T> >::Variant(GVariant*, bool)’
   1026 |   explicit Variant< Variant<T> >(GVariant* castitem, bool take_a_reference = false);
        |            ^~~~~~~~~~~~~~~~~~~~~
  /usr/include/glibmm-2.4/glibmm/variant.h:1009:7: note: ‘class Glib::Variant<Glib::Variant<T> >’ defined here
   1009 | class Variant< Variant<T> > : public VariantContainerBase
        |       ^~~~~~~~~~~~~~~~~~~~~

  Test Plan
  =========
  Run the following two terminal commands in Bash:
  1. sudo apt-get satisfy libglibmm-2.4-dev 'build-essential | g++'
  2. g++ -x c++ -std=gnu++20 -include glibmm.h - <<< 'int main(){}' `pkg-config --cflags --libs glibmm-2.4` -o /dev/null

  Make sure the latter command produced no output and ended with zero
  exit code.

  Where problems could occur
  ===========================
  The proposed patch only modifies C++ headers. It may affect only building other packages from source or developer experience.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/glibmm2.4/+bug/1955044/+subscriptions




More information about the Ubuntu-sponsors mailing list