#незнакомый синтаксис 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-м стандартом?