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

14
Вызов функции с указателем на неконстантный и указатель на константные аргументы с тем же адресом

Я хочу написать функцию, которая вводит массив данных и выводит другой массив данных, используя указатели. Мне интересно, каков результат, если оба srcи dstуказали на один и тот же адрес, потому что я знаю, что компилятор может оптимизировать для const. Это неопределенное поведение? (Я отметил теги...

14
Почему std :: swap не помечен как constexpr до C ++ 20?

В C ++ 20 std::swapстановится constexprфункцией. Я знаю, что стандартная библиотека действительно отстала от языка в маркировке вещей constexpr, но к 2017 году <algorithm>была в значительной степени консекстом, как и куча других вещей. Пока - std::swapнет. Я смутно помню, что был какой-то...

13
Неоднозначный оператор в gcc

Я сделал шаблон функции для печати некоторых контейнеров stl #include <iostream> #include <vector> #include <string> template <template <typename, typename> class C, typename T, typename A> std::ostream& operator<<(std::ostream& os, const C<T,...

13
Почему типы выражений менялись в C ++ между версиями?

Я пытаюсь понять типы выражений C ++, и чем больше я читаю, тем больше я запутался, поскольку нахожу черновик C ++ очень сложным для восприятия и поэтому предпочитаю другие ресурсы, но они либо противоречат друг другу, либо не учитывают, что формулировка и определение между версиями C ++ сильно...

13
Как определить, какие заголовочные файлы включить?

Скажем, у меня есть ниже (очень простой) код. #include <iostream> int main() { std::cout << std::stoi("12"); } Это прекрасно компилируется как на g ++, так и на clang; однако он не может быть скомпилирован в MSVC со следующей ошибкой: ошибка C2039: «Stoi»: не является членом «STD»...

13
Возможная ошибка компилятора в MSVC

Следующий код компилируется с помощью gcc и clang (и многих других компиляторов C ++ 11) #include <stdint.h> typedef int datatype; template <typename T> struct to_datatype {}; template <> struct to_datatype<int16_t> { static constexpr datatype value = 1; }; template...

13
если constexpr с static_assert в лямбде, какой компилятор правильный?

Когда мы хотим использовать a static_assertв a, if constexprмы должны сделать условие зависимым от некоторого параметра шаблона. Интересно, что gcc и clang не согласны, когда код обернут в лямбду. Следующий код компилируется с помощью gcc, но clang запускает утверждение, даже если значение if...

13
Является ли объяснение расслабленного порядка ошибочным в сравнении?

В документации std::memory_orderна cppreference.com есть пример непринужденного заказа: Расслабленный заказ Маркированные атомарные операции memory_order_relaxedне являются операциями синхронизации; они не навязывают порядок между одновременными обращениями к памяти. Они гарантируют только...

13
Самый быстрый способ найти минимальное произведение из 2 элементов массива, содержащих более 200 000 элементов

У меня есть массив a[n]. Номер nвводится нами. Мне нужно найти минимальный продукт a[i]и a[j]если: 1) abs(i - j) > k 2) a[i] * a[j]минимизируется Вот мое решение (очень наивное): #include <iostream> using namespace std; #define ll long long int main() { ll n,k; cin >> n >> k;...

13
Как можно быстро вычислить const expr

Я пробовал константные выражения, которые оцениваются во время компиляции. Но я играл с примером, который кажется невероятно быстрым при исполнении во время компиляции. #include<iostream> constexpr long int fib(int n) { return (n <= 1)? n : fib(n-1) + fib(n-2); } int main () { long int res...

13
Как достичь барьера StoreLoad в C ++ 11?

Я хочу написать переносимый код (Intel, ARM, PowerPC ...), который решает вариант классической задачи: Initially: X=Y=0 Thread A: X=1 if(!Y){ do something } Thread B: Y=1 if(!X){ do something } в которой цель состоит в том, чтобы избежать ситуации, в которой работают оба потокаsomething . (Хорошо,...

13
Как сравнить общие структуры в C ++?

Я хочу сравнить структуры в общем виде, и я сделал что-то вроде этого (я не могу поделиться фактическим источником, поэтому попросите более подробную информацию, если это необходимо): template<typename Data> bool structCmp(Data data1, Data data2) { void* dataStart1 =...

13
Выполнять функцию внутри шаблона функции только для тех типов, для которых определена функция

У меня есть шаблон функции, который принимает много разных типов в качестве входных данных. Из этих типов только один из них имеет getInt()функцию. Поэтому я хочу, чтобы код запускал функцию только для этого типа. Пожалуйста, предложите решение. Спасибо #include <type_traits> #include...

13
Копировать список инициализации? Почему это компилируется?

Я использую Microsoft Visual Studio Community 2019, V16.5.2. Я хочу проверить инициализацию списка Пожалуйста, смотрите следующую тестовую программу: #include <string> void foo(std::string str) {} int main() { foo( {"str1", "str2"} ); return 0; } Это компилируется без ошибок и предупреждений....

13
Как работает реализация C ++ nullptr?

Мне любопытно узнать, как nullptrработает. Стандарты N4659 и N4849 гласят: он должен иметь тип std::nullptr_t; вы не можете взять его адрес; это может быть непосредственно преобразовано в указатель и указатель на член; sizeof(std::nullptr_t) == sizeof(void*); его преобразование в boolесть false;...