LINUX.ORG.RU

Сообщения jban

 

незнакомый синтаксис c++ в glibmm

Форум — Development

#незнакомый синтаксис c++ в glibmm

У меня есть приложение, написанное с применением gtkmm. Без проблем собирается как g++, так и clang++ со всеми флагами стандарта, вплоть до -std=c++17. Однако на g++-11.2 с флагом -std=c++20 компиляция завершается с ошибкой:

/usr/include/glibmm-2.4/glibmm/variant.h:956:24: error: expected unqualified-id before ‘)’ token
  956 |   Variant<VariantBase>();
      |                        ^
compilation terminated due to -Wfatal-errors.

Ошибка указывет конструктор glibmm-вского класса Variant. Класс объявлен так:

template<>
class GLIBMM_API Variant<VariantBase> : public VariantContainerBase
{
public:
  using CType = GVariant*;
  using CppType = VariantBase;
  using CppContainerType = Variant<VariantBase>;

  /// Default constructor.
  Variant<VariantBase>();

   и т.д.

Там еще много разных специализаций Variant для разных типов с таким синтаксисом объявления конструктора:

template<>
class GLIBMM_API Variant<Glib::ustring> : public VariantStringBase
{
public:
  using CType = char*;
  using CppType = Glib::ustring;

  /// Default constructor.
  Variant<Glib::ustring>();

...

Вопрос: что это за синтаксис конструктора и почему он не собирается с 20-м стандартом?

 

jban
()

RSS подписка на новые темы