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

C ++ 14 - назва стандарту C ++, затвердженого в 2014 році. Він спирається на попередній стандарт C ++ 11, вдосконалюючи основну мову та стандартну бібліотеку та додаючи деякі функції.

4
У чому полягає потреба шаблону лямбда, введеного в C ++ 20, коли в C ++ 14 уже є загальна лямбда?
c ++ 14 представив загальні лямбди, які дали можливість писати наступне: auto func = [](auto a, auto b){ return a + b; }; auto Foo = func(2, 5); auto Bar = func("hello", "world"); Цілком зрозуміло, що ця загальна лямбда funcпрацює так само, як працює шаблонна функція func. Чому комітет C …

6
помилка :: make_unique не є членом 'std'
Я намагаюся скомпілювати наступну програму пулу потоків, опубліковану в огляді коду, щоб перевірити її. /codereview/55100/platform-independant-thread-pool-v4 Але я отримую помилки threadpool.hpp: In member function ‘std::future<decltype (task((forward<Args>)(args)...))> threadpool::enqueue_task(Func&&, Args&& ...)’: threadpool.hpp:94:28: error: ‘make_unique’ was not declared in this scope auto package_ptr = make_unique<task_package_impl<R, decltype(bound_task)>> (std::move(bound_task), std::move(promise)); ^ threadpool.hpp:94:81: error: expected primary-expression before …

2
Яка мета використання союзу лише з одним членом?
Коли я читав вихідний код моря , я помітив, що існує структура союзу, tx_sideяка має лише одного члена. Це якийсь хакер для вирішення певної проблеми? FYI, я вставляю tx_sideструктуру нижче: union tx_side { tx_side() {} ~tx_side() {} void init() { new (&a) aa; } struct aa { std::deque<work_item*> pending_fifo; } …
89 c++  c++14  unions 

5
Чому лямбда має розмір 1 байт?
Я працюю з пам’яттю деяких лямбд у C ++, але трохи здивований їх розміром. Ось мій тестовий код: #include <iostream> #include <string> int main() { auto f = [](){ return 17; }; std::cout << f() << std::endl; std::cout << &f << std::endl; std::cout << sizeof(f) << std::endl; } Ви можете …
89 c++  c++11  lambda  c++14  sizeof 

3
Що таке const void?
В описі std::is_voidзазначено, що: Забезпечує значення константи члена, яке дорівнює істині, якщо T - тип void, const void, volatile void або const volatile void. Тоді що може бути const void, або a volatile void? У цій відповіді зазначено, що const voidтип повернення буде недійсним (однак компілюється у VC ++ 2015) …
89 c++  c++11  c++14 

3
Безлад у ініціалізації за замовчуванням, значенням та нулем
Я дуже заплутаний щодо значення- та за замовчуванням та нульової ініціалізації. і особливо коли вони застосовують різні стандарти C ++ 03 та C ++ 11 (і C ++ 14 ). Я цитую і намагаюся викласти справді хорошу відповідь Value- / Default- / Zero- Init C ++ 98 і C ++ …
88 c++  c++11  c++14  c++03  c++98 

3
Чи завжди покажчик із правильною адресою та типом завжди є дійсним покажчиком з C ++ 17?
(Стосовно цього питання та відповіді .) До стандарту C ++ 17 у [basic.compound] / 3 було включено таке речення : Якщо об’єкт типу T знаходиться за адресою A, вказівник типу cv T *, значення якого є адресою A, вказує на цей об’єкт, незалежно від того, як було отримано значення. Але …

1
Як імітувати EBO при використанні необробленого сховища?
У мене є компонент, який я використовую при реалізації низькорівневих загальних типів, які зберігають об'єкт довільного типу (може бути або не бути типом класу), який може бути порожнім, щоб скористатися перевагами порожньої базової оптимізації : template <typename T, unsigned Tag = 0, typename = void> class ebo_storage { T item; …
79 c++  c++14 

5
Як отримати адресу функції C ++ лямбда у самій лямбда?
Я намагаюся розібратися, як отримати адресу лямбда-функції всередині себе. Ось зразок коду: []() { std::cout << "Address of this lambda function is => " << ???? }(); Я знаю, що я можу зафіксувати лямбда в змінній і надрукувати адресу, але хочу зробити це на місці, коли виконується ця анонімна функція. …
53 c++  c++11  lambda  c++14  c++17 

1
Чому std :: атомний конструктор поводиться по-різному в C ++ 14 і C ++ 17
Я працюю над проектом на C ++ 11 і спробував наступний код #include <atomic> struct A { std::atomic_int idx = 1; }; int main() { return 0; } Я отримую помилку компілятора error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]' std::atomic_int idx = 1; ^ Той самий …
19 c++  c++14  c++17  stdatomic 

3
Значення замикання лямбда можуть бути передані як референтні параметри rvalue
Я виявив, що lvalueлямбда-закриття завжди можна передавати як rvalueпараметри функції. Дивіться наступну просту демонстрацію. #include <iostream> #include <functional> using namespace std; void foo(std::function<void()>&& t) { } int main() { // Case 1: passing a `lvalue` closure auto fn1 = []{}; foo(fn1); // works // Case 2: passing a `lvalue` function …

4
Постійний перерахунок C ++ 11
Чи є спосіб перевірити в C ++ 11, якщо перерахунок є безперервним ? Цілком справедливо давати значення перерахунків, яких немає. Чи може бути така функція, як ознака типу в C ++ 14, C ++ 17 або, можливо, C ++ 20, щоб перевірити, чи перераховується перерахунок? Це потрібно використовувати в static_assert. …
17 c++  c++11  c++14  c++17  c++20 

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

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

1
Чи може змінний шаблон передаватися як аргумент шаблону шаблону?
Наведений нижче безглуздий приклад не компілює, але чи є інший спосіб передати змінний шаблон як аргумент шаблону шаблону? template<typename T> constexpr auto zero = T{0}; template<typename T, template<typename> auto VariableTemplate> constexpr auto add_one() { return VariableTemplate<T> + T{1}; } int main() { return add_one<int, zero>(); } Спробуйте в Провіднику компілятора

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