c++14- все статьи тега


Как правильно указать условия якорения в Spirit X3?

Я новичок в написании парсеров. Я пытаюсь создать парсер, который может извлекать почтовые индексы США из входного текста. Я создал следующие шаблоны синтаксического анализа, которые делают большую часть того, что я хочу. Я могу сопоставить 5-значные почтовые индексы или 9-значные почтовые индексы (90210-1234), как и ожидалось. Однако это не позволяет мне избегать совпадений, таких как: 246764 (возвращает 46764) 578397 (возвращается 78397) Я хотел бы уточнить некоторые привязки усл ...

Инициализация QByteArray

Я могу инициализировать QByteArray как: QByteArray m_data; m_data[0] = 0x0c; m_data[1] = 0x06; m_data[2] = 0x04; m_data[3] = 0x04; m_data[4] = 0x02; m_data[5] = 0x00; Но я хотел бы что-то более компактное, например: QByteArray m_data{0x0c, 0x06, 0x04, 0x04, 0x02, 0x00}; К сожалению, эта форма не разрешена: error: could not convert '{12, 6, 4, 4, 2, 0}' from '<brace-enclosed initializer list>' to 'QByteArray' QByteArray m_data{0x0c, 0x06, 0x04, 0x04, 0x02, 0x00}; ...

Почему и массивы размера среды выполнения, и std:: dynarray в C++14?

Проект C++14 включает в себя массивы размера среды выполнения и контейнер std::dynarray. Из того, что я могу сказать, единственное реальное различие между ними состоит в том, что std::dynarray имеет интерфейс STL (например,, begin, end, size, и т.д.), в то время как массивы размера времени выполнения этого не делают. Так зачем же C++14 нужны они оба? Я понимаю, что массивы размера среды выполнения являются частью основного языка, в то время как std::dynarray является частью стандартной библиот ...

лязг не вывести аргумент шаблона в шаблон функции с переменным числом с varargs

Рассмотрим код: #include <tuple> template<class... Args, class T> T method(std::tuple<Args...>, Args..., T, ...) { return T(); } int main() { method(std::make_tuple<int, float, double>(1, 1.0f, 1.0), 1, 1.0f, 1.0, 1); } g++ так как 4.9 не имеет проблем с его компиляцией. clang++ с другой стороны дает ошибку: main.cpp:9:5: error: no matching function for call to 'method' method(std::make_tuple<int, float, double>(1, 1.0f, 1.0), ^~~~~~ m ...

enum в строку в современном C++11 и C++14 и C++17 и будущее C++с 20

в отличие от всех других подобных вопросов, этот вопрос касается использования новых функций C++. 2008 c есть ли простой способ преобразовать перечисление C++ в строку? 2008 c простой способ использовать переменные перечисления типов в качестве строки в C? 2008 c++ как легко сопоставить перечисления c++ со строками 2008 c++ делает что-то как идентификатор C и строку? 2008 c++ есть ли простой скрипт для преобразования перечисления C++ в струна? 2009 c++ как использовать перечисления в кач ...

Копирование / перемещение назначения в std:: vector:: erase() и std:: deque:: erase()

в ответе еще вопрос я наткнулся на несколько другие формулировки для std::vector::erase() и std::deque::erase(). вот что говорит C++14 о std::deque::erase ([deque.modifiers]/4-6, выделено мной): эффекты: ... сложность: количество вызовов деструктора совпадает с количеством стертых элементов, но Количество звонков в назначение оператор не больше, чем меньшее из числа элементов До стертых элементов и количество элементов после стертых элементов. Броски: ничего, если исключение ...

Как работает " void t

я смотрел выступление Уолтера Брауна на Cppcon14 о современном программировании шаблонов (Часть I,Часть II), где он представил свою void_t техника SFINAE. пример: Учитывая простой шаблон переменной, который оценивается в void если все аргументы шаблона формата: template< class ... > using void_t = void; и следующий признак, который проверяет наличие переменной-члена с именем : template< class , class = void > struct has_member : std::false_type { }; // specialized as has_member ...

Как я могу избежать циклов "for" с условием " if " внутри них с помощью C++?

почти со всем кодом, который я пишу, я часто имею дело с проблемами сокращения набора в коллекциях, которые в конечном итоге заканчиваются наивными условиями "если" внутри них. Вот простой пример: for(int i=0; i<myCollection.size(); i++) { if (myCollection[i] == SOMETHING) { DoStuff(); } } с функциональными языками я могу решить проблему, уменьшив коллекцию до другой коллекции (легко), а затем выполнить все операции над моим уменьшенным набором. В псевдокоде: new ...

Изменился ли стандарт C++ в отношении использования неопределенных значений и неопределенного поведения в C++14?

как описано в разделе инициализация влечет за собой преобразование lvalue-to-rvalue? Это int x = x; UB? в стандарте C++ есть удивительный пример в разделе 3.3.2пункт декларации, в котором int инициализируется собственным неопределенным значением: int x = 12; { int x = x; } здесь второй x инициализируется своим собственным (неопределенным) значением. - пример] какой ответ Йоханнеса на этот вопрос указывает на это неопределенное поведение, так как он требует это значение lvalue-на-прав ...