Я уже некоторое время программирую, используя Gtkmm, без проблем используя возможности C ++ 11.Сегодня я добавил строку кода с использованием функции C ++ 14 std::make_unique
и получил ошибку компилятора.Сначала я думал, что у меня проблема с конфигурацией сборки, но после некоторого тестирования я сократил ее до Gtkmm.Вот код, который прекрасно работает в моей системе:
Команда построения:
g++ -std=c++14 main.cpp
Код:
#include <memory>
int main()
{
std::unique_ptr<int> intPtr;
intPtr = std::make_unique<int>(3);
return 0;
}
Если я переключусь на эту команду сборки:
g++ -std=c++14 main.cpp `pkg-config gtkmm-3.0 --cflags --libs`
Код больше не собирается.Я получаю следующие ошибки:
main.cpp: In function ‘int main()’:
main.cpp:7:14: error: ‘make_unique’ is not a member of ‘std’
intPtr = std::make_unique<int>(3);
^
main.cpp:7:31: error: expected primary-expression before ‘int’
intPtr = std::make_unique<int>(3);
В чем проблема с Gtkmm?Для вашей информации я использую g ++ v 5.4.0 и gtkmm 3.0.
РЕДАКТИРОВАТЬ: Кажется, это не связано с C ++ 14.Я пробовал строить с другими функциями C ++ 14, такими как [[DEPRECATED]]
, и все работало нормально.Может быть, только стандартная библиотека ... Я также попытался перейти на g ++ 7 и получил те же ошибки.