Skip to content

gcc-16 fails to compile tgcalls: missing cstdint includes #49

@AngryLoki

Description

@AngryLoki

gcc-16 (will be released soon) fails to compile tgcalls with the following errors:

In file included from /var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/Instance.h:11,
                 from /var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/Instance.cpp:1:
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:14:25: error: ‘uint8_t’ was not declared in this scope
   14 |     virtual std::vector<uint8_t> addOnIncomingPacket(std::function<void(std::shared_ptr<std::vector<uint8_t>>)> &&) = 0;
      |                         ^~~~~~~
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:1:1: note: ‘uint8_t’ is defined in header ‘<cstdint>’; this is probably fixable by adding ‘#include <cstdint>’
  +++ |+#include <cstdint>
    1 | #ifndef TGCALLS_DIRECT_CONNECTION_CHANNEL_H
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:14:32: error: template argument 1 is invalid
   14 |     virtual std::vector<uint8_t> addOnIncomingPacket(std::function<void(std::shared_ptr<std::vector<uint8_t>>)> &&) = 0;
      |                                ^
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:14:32: error: template argument 2 is invalid
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:14:18: error: ‘<expression error>’ in namespace ‘std’ does not name a type
   14 |     virtual std::vector<uint8_t> addOnIncomingPacket(std::function<void(std::shared_ptr<std::vector<uint8_t>>)> &&) = 0;
      |                  ^~~~~~~~~~~~~~~
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:15:53: error: ‘uint8_t’ was not declared in this scope
   15 |     virtual void removeOnIncomingPacket(std::vector<uint8_t> &token) = 0;
      |                                                     ^~~~~~~
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:15:53: note: ‘uint8_t’ is defined in header ‘<cstdint>’; this is probably fixable by adding ‘#include <cstdint>’
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:15:60: error: template argument 1 is invalid
   15 |     virtual void removeOnIncomingPacket(std::vector<uint8_t> &token) = 0;
      |                                                            ^
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:15:60: error: template argument 2 is invalid
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:15:62: error: expected identifier before ‘&’ token
   15 |     virtual void removeOnIncomingPacket(std::vector<uint8_t> &token) = 0;
      |                                                              ^
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:16:57: error: ‘uint8_t’ was not declared in this scope
   16 |     virtual void sendPacket(std::unique_ptr<std::vector<uint8_t>> &&packet) = 0;
      |                                                         ^~~~~~~
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:16:57: note: ‘uint8_t’ is defined in header ‘<cstdint>’; this is probably fixable by adding ‘#include <cstdint>’
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:16:57: error: template argument 1 is invalid
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:16:57: error: template argument 2 is invalid
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:16:64: error: template argument 1 is invalid
   16 |     virtual void sendPacket(std::unique_ptr<std::vector<uint8_t>> &&packet) = 0;
      |                                                                ^~
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:16:64: error: template argument 2 is invalid
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/DirectConnectionChannel.h:16:67: error: expected identifier before ‘&&’ token
   16 |     virtual void sendPacket(std::unique_ptr<std::vector<uint8_t>> &&packet) = 0;
      |                                                                   ^~
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/Instance.h:41:9: error: ‘uint16_t’ does not name a type
   41 |         uint16_t port = 0;
      |         ^~~~~~~~
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/Instance.h:12:1: note: ‘uint16_t’ is defined in header ‘<cstdint>’; this is probably fixable by adding ‘#include <cstdint>’
   11 | #include "DirectConnectionChannel.h"
  +++ |+#include <cstdint>

... repetitions skipped ...

var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/third-party/json11.cpp:104:35: note: ‘uint8_t’ is defined in header ‘<cstdint>’; this is probably fixable by adding ‘#include <cstdint>’
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/third-party/json11.cpp: In function ‘std::string json11::esc(char)’:
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/third-party/json11.cpp:330:21: error: ‘uint8_t’ does not name a type
  330 |     if (static_cast<uint8_t>(c) >= 0x20 && static_cast<uint8_t>(c) <= 0x7f) {
      |                     ^~~~~~~
/var/tmp/portage/net-im/telegram-desktop-6.2.3/work/tdesktop-6.2.3-full/Telegram/ThirdParty/tgcalls/tgcalls/third-party/json11.cpp:330:21: note: ‘uint8_t’ is defined in header ‘<cstdint>’; this is probably fixable by adding ‘#include <cstdint>’

All these errors are valid and will persist in libstdc++-16.

As there are multiple files affected (including json11.cpp third-party, which is not developed anymore), I'll attach the PR, which fixes compilation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions