Вопросы с тегом «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
error :: 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 …

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; } Вы …
90 c++  c++11  lambda  c++14  sizeof 

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

3
Что такое const void?
В описании std::is_voidговорится, что: Предоставляет значение константы члена, равное true, если T является типом void, const void, volatile void или const volatile void. Тогда что могло быть const void, или volatile void? В этом ответе указано, что const voidтип возвращаемого значения будет недопустимым (однако компилируется на VC ++ 2015). const …
89 c++  c++11  c++14 

3
По умолчанию, значение и нулевой беспорядок инициализации
Я очень запутался в инициализации значений, значений по умолчанию и нуля. и особенно когда они вступают в силу различных стандартов C ++ 03 и C ++ 11 (и C ++ 14 ). Я цитирую и пытаюсь расширить действительно хороший ответ Value- / Default- / Zero- Init C ++ 98 и …
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 { …
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 :: atomic ведет себя по-разному в 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` …

4
Непрерывное перечисление C ++ 11
Есть ли способ проверить в C ++ 11, является ли перечисление непрерывным ? Полностью допустимо указывать значения enum, которых нет. Есть ли такая особенность, как черта типа в C ++ 14, C ++ 17 или, может быть, C ++ 20, чтобы проверить, является ли enum непрерывным? Это будет использоваться в …
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>(); } Попробуйте в Compiler Explorer

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.