Я использую класс Timer Poco в своем приложении на C++. После перехода на более свежую версию компилятора C++ я внезапно получил кучу ошибок, связанных с файлами заголовков, которые я всегда использовал. Один из них:
In file included from /home/jacek/bin/sysroot/usr/include/Poco/TimedNotificationQueue.h:22,
from /home/jacek/bin/sysroot/usr/include/Poco/Util/Timer.h:23,
from ProceduralTimerTaskAdapter.cpp:4:
/home/jacek/bin/sysroot/usr/include/Poco/Notification.h:41:41: error: unable to find string literal operator 'operator""s' with 'const char [1]', 'unsigned int' arguments
Notification(const std::string& name = ""s);
^~~
Код клиента представляет собой простую директиву #include:
#include
Такая ошибка уже возникает, когда мой компилятор пытается переварить файлы заголовков Poco.
Это мой компилятор:
╭─jacek@epica /import/valen/autoradio
╰─➤ arm-unknown-linux-gnueabihf-g++ --version
arm-unknown-linux-gnueabihf-g++ (crosstool-NG 1.24.0) 8.3.0
Версия Poco — 1.14.2 Basic Edition.
Обратите внимание, что это код, который поставляется с программным обеспечением сторонних производителей, поэтому я не могу здесь многое изменить (за исключением замены Poco каким-либо другим продуктом, но это была бы пустая трата времени).
Здесь, в SO, есть похожий, но не идентичный вопрос: [невозможно найти строковый литерал оператора 'operator''conteudo' с аргументами 'const char [43]', 'unsigned int'][1] Там была строка-в-строке, которая вызвала ошибку.
Обновление: Предложение использовать пространство имен std::string_literals, к сожалению, не помогло, но представило другое ошибка:
ProceduralTimerTaskAdapter.cpp:3:22: error: 'string_literals' is not a namespace-name
using namespace std::string_literals;
^~~~~~~~~~~~~~~
ProceduralTimerTaskAdapter.cpp:3:37: error: expected namespace-name before ';' token
using namespace std::string_literals;```
[1]: https://stackoverflow.com/questions/726 ... st-char-43
Подробнее здесь: https://stackoverflow.com/questions/798 ... rators-wit