Запитання з тегом «c++»

C ++ - мова програмування загального призначення. Спочатку він був розроблений як розширення до C і має подібний синтаксис, але зараз це зовсім інша мова. Використовуйте цей тег для запитань про код (який потрібно) зібрати за допомогою компілятора C ++. Використовуйте тег, що стосується версії, для питань, пов’язаних із конкретною стандартною редакцією [C ++ 11], [C ++ 14], [C ++ 17] або [C ++ 20] тощо.

1
std :: is_constructible повертає непослідовне значення для приватного конструктора
Які правила std::is_constructibleкеруються приватними конструкторами? Дано наступний код: #include <iostream> class Class { private: Class() { } }; template <typename T> class Test { public: static void test() { std::cout //<< std::is_constructible<Class>::value << std::is_constructible<T>::value << std::endl; } }; int main() { Test<Class>::test(); } Цей відбиток 0( ideone ), тобто Tне …
13 c++  typetraits 

1
Проблема компілятора C ++ із структурою в класі шаблонів
Наступний код не компілюється з gcc або clang. template<class T> class foo{}; template<class T> class template_class_with_struct { void my_method() { if(this->b.foo < 1); }; struct bar { long foo; } b; }; Повідомлення про помилку є error: type/value mismatch at argument 1 in template parameter list for 'template<class T> class …

3
Виконати функцію всередині шаблону функції лише для тих типів, у яких визначена функція
У мене є шаблон функції, який приймає багато різних типів як його введення. З цих типів лише один з них має getInt()функцію. Отже, я хочу, щоб код запускав функцію лише для цього типу. Просимо запропонувати рішення. Дякую #include <type_traits> #include <typeinfo> class X { public: int getInt(){ return 9; } …

6
Як порівняти родові структури в C ++?
Я хочу порівняти структури в загальному вигляді, і я зробив щось подібне (я не можу поділитися фактичним джерелом, тому запитайте більше деталей, якщо це необхідно): template<typename Data> bool structCmp(Data data1, Data data2) { void* dataStart1 = (std::uint8_t*)&data1; void* dataStart2 = (std::uint8_t*)&data2; return memcmp(dataStart1, dataStart2, sizeof(Data)) == 0; } Це здебільшого …

2
Як можна швидко оцінити expr exst
Я випробував вирази const, які оцінюються під час компіляції. Але я грав із прикладом, який здається неймовірно швидким, коли виконується під час компіляції. #include<iostream> constexpr long int fib(int n) { return (n <= 1)? n : fib(n-1) + fib(n-2); } int main () { long int res = fib(45); std::cout …
13 c++  const  constexpr 

4
Як досягти бар'єру 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 . (Добре, якщо жодна річ не працює; це не …

3
Найшвидший спосіб знайти мінімальний добуток із двох елементів масиву, що містять 200000+ елементів
У мене є масив 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; ll …

4
Чи пояснення розслабленого замовлення помилкове в cppreference?
У документації std::memory_orderна сайті cppreference.com є приклад розслабленого замовлення: Розслаблене замовлення Атомні операції з тегом memory_order_relaxedне є операціями синхронізації; вони не нав'язують порядок серед паралельних доступу до пам'яті. Вони гарантують лише атомність та послідовність порядку модифікації. Наприклад, спочатку x і y дорівнює нулю, // Thread 1: r1 = y.load(std::memory_order_relaxed); // …

2
якщо constexpr із static_assert в лямбда, який компілятор є правильним?
Коли ми хочемо використовувати a static_assertв a, if constexprми повинні зробити умову залежною від певного параметра шаблону. Цікаво, що gcc та clang не погоджуються, коли код загорнутий у лямбда. Наступний код компілюється з gcc, але clang викликає ствердження, навіть якщо це if constexprне може бути правдою. #include <utility> template<typename T> …

1
Можлива помилка компілятора в 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 <typename T> class data { public: data(datatype dt = to_datatype<T>::value) {} }; …
13 c++  c++11  visual-c++ 

1
Чому своп викликається std :: sor, лише якщо мій контейнер містить більше 32 елементів?
Привіт, у мене просте запитання: class A { public: A(int); A(const A&); A& operator=(const A&); ~A(); private: int* ptr_; friend bool operator<(const A&, const A&); friend void swap(A&, A&); }; A::A(int x) : ptr_(new int(x)) {} A::A(const A& rhs) : ptr_(rhs.ptr_ ? new int(*rhs.ptr_) : nullptr) {} A& A::operator = …
13 c++  std  swap 

2
Як визначити, які файли заголовків включати?
Скажіть, у мене наведений нижче (дуже простий) код. #include <iostream> int main() { std::cout << std::stoi("12"); } Це добре поєднує як g ++, так і кланг; однак він не може компілювати MSVC із такою помилкою: помилка C2039: 'stoi': не є членом 'std' помилка C3861: 'stoi': ідентифікатор не знайдено Я знаю, …
13 c++ 

1
Чому типи виразів змінювались у C ++ між версіями?
Я намагаюся зрозуміти типи виразів C ++ і чим більше я читаю, тим я був більш розгубленим, оскільки мені здається, що проект C ++ дуже важкий для засвоєння, і тому віддаю перевагу іншим ресурсам, але вони або суперечать один одному, або не враховують, що формулювання та визначення між версіями C …
13 c++  c++11  c++14  c++17  c++20 

1
Амбітний оператор в 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, A>& container) { for (auto& elem : container) { os << elem << " "; } return os; } int …
13 c++  c++17 


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.