Вопросы с тегом «c++»

11
Является ли `string.assign (string.data (), 5)` хорошо определенным или UB?

Коллега хотел написать это: std::string_view strip_whitespace(std::string_view sv); std::string line = "hello "; line = strip_whitespace(line); Я сказал, что возвращение string_viewсделало меня априори непростым , и, кроме того, псевдоним здесь выглядел как UB для меня. Я могу с уверенностью...

11
Разница между std :: resize (n) и std :: shrink_to_fit в C ++?

Я сталкивался с этими утверждениями: resize(n)- Изменяет размер контейнера так, чтобы он содержал «n» элементов. shrink_to_fit()- Уменьшает емкость контейнера до его размера и уничтожает все элементы, превышающие емкость. Есть ли существенная разница между этими функциями? они попадают под векторы...

11
Прерывание изменений в C ++ 20 или регрессия в clang-trunk / gcc-trunk при перегрузке сравнения равенства с небулевым возвращаемым значением?

Следующий код прекрасно компилируется с clang-trunk в режиме c ++ 17, но прерывается в режиме c ++ 2a (предстоящий c ++ 20): // Meta struct describing the result of a comparison struct Meta {}; struct Foo { Meta operator==(const Foo&) {return Meta{};} Meta operator!=(const Foo&) {return...

11
Могут ли быть разные неявные объекты, основанные на более позднем решении времени выполнения в C ++ 20?

Этот вопрос относится к добавлению P0593 к последней версии C ++ 20 . Вот мой пример: #include <cstdlib> #include <cstdio> void foo(void *p) { if ( std::getchar() == 'i' ) { *(int *)p = 2; std::printf("%d\n", *(int *)p); } else { *(float *)p = 2; std::printf("%f\n", *(float *)p); } }...

11
GCC реализация угловых скобок включает в себя. Почему это должно быть так, как описано ниже?

Этот документ в разделе 2.6 «Вычисленные включения» имеет следующий параграф: Если строка расширяется до потока токенов, начинающегося с токена <и включающего токен>, то токены между <и первым> объединяются, чтобы сформировать имя файла для включения. Любой пробел между токенами...

10
Что происходит, если неопределенное поведение C ++ соответствует определенному поведению C?

У меня есть *.cppфайл, который я компилирую с C ++ (не компилятор C). Содержащая функция опирается на приведение (см. Последнюю строку), которое, кажется, определено в C (пожалуйста, исправьте, если я ошибаюсь!), Но не в C ++ для этого специального типа. [...] C++ code [...] struct sockaddr_in sa =...

10
Как преобразовать числовые массивы в вектор <int> & (ссылка) с помощью SWIG

Моя цель: Создайте 3 пустых массива в python (2 из них будут инициализированы с конкретными значениями), затем отправьте все три из них через swig в функцию c ++ в виде векторных ссылок (это делается для того, чтобы избежать копирования данных и потери эффективности). Оказавшись в функции c ++,...

10
Динамическое связывание - Linux Vs. Windows

Под Windows, когда я компилирую код C / C ++ в проекте DLL в MSVC, я получаю 2 файла: MyDll.dll MyDll.lib где, насколько я понимаю, MyDll.libсодержит какую-то таблицу указателей с указанием расположения функций в dll. При использовании этой dll, скажем, в exe-файле, MyDll.libон внедряется в...

10
Почему не обязательно использовать typename для зависимых типов в следующем случае?

Я читал об удалении ссылки типа здесь . Это дает следующий пример: #include <iostream> // std::cout #include <type_traits> // std::is_same template<class T1, class T2> void print_is_same() { std::cout << std::is_same<T1, T2>() << '\n'; } int main() { std::cout...

10
Как убрать копию при создании цепочки?

Я создаю класс типа цепочки, такой как маленький пример ниже. Похоже, что при объединении функций-членов вызывается конструктор копирования. Есть ли способ избавиться от вызова конструктора копирования? В моем примере с игрушкой, приведенным ниже, очевидно, что я имею дело только с временными, и...

10
Мой компилятор игнорировал мой неиспользуемый статический член класса thread_local?

Я хочу сделать некоторую регистрацию потока в моем классе, поэтому я решил добавить проверку для этой thread_localфункции: #include <iostream> #include <thread> class Foo { public: Foo() { std::cout << "Foo()" << std::endl; } ~Foo() { std::cout << "~Foo()" <<...

10
Разрешено ли выражениям «требуется» захватывать переменные вмещающей области?

В следующем примере аргументы функции используются для проверки с помощью выражения require, правильно ли сформировано выражение, использующее их. Выражение require не имеет аргументов; он напрямую использует переменные в области действия функции: #include <cstddef> #include <vector>...

10
VCRUNTIME140_1.dll отсутствует после сборки решения с помощью c ++

Я создал небольшое текстовое приключение. Я построил решение с помощью Visual Studio Community 2019, используя настройки Release и x64. Я заархивировал файл * .exe вместе с другими сгенерированными файлами и отправил их на другой компьютер, на котором не установлена ​​VS, и появилась ошибка,...

10
Несоответствующий вывод авто типов между различными компиляторами c ++

Итак, я пытаюсь реализовать точечный продукт ( https://en.wikipedia.org/wiki/Dot_product ) в какой-то разновидности современного C ++ и придумал следующий код: #include <iostream> template<class... Args> auto dot(Args... args) { auto a = [args...](Args...) { return [=](auto... brgs) {...

10
Можно ли ограничить количество потоков для C ++ 17 параллельно `for_each`?

Я использую std::for_eachс std::execution::parдля выполнения сложных вычислений на огромном входе представлен в виде вектора структур. Вычисления не требуют каких-либо задержек, связанных с аппаратным обеспечением (например, сетевой или дисковый ввод-вывод), это просто вычисления процессора. Для...

10
Когда вам нужна строка с нулевым окончанием в сценарии только для чтения?

Я играл с std::string_viewбиблиотекой и обдумывал изменение кодовой базы, над которой я работал, чтобы использовать std::string_viewкак можно больше. Тем не менее, во многих темах, которые я прочитал на тему, когда и где использовать std::string_viewвместо const std::string &. Я видел много...

10
Что означают ^ () {} и ^ {} в C ++?

Я недавно прочитал некоторый код C ++, как это: setData(total, &user, ^() { struct dst_t to = {ip, port}; sendData(to, data); }); getData(total, ^{ recvData(data, NULL); }); Я никогда не видел ^() {}ни ^{}. Что они имеют в виду? Какая-то анонимная...