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

88
По умолчанию, значение и нулевой беспорядок инициализации

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

84
Всегда ли указатель с правильным адресом и типом является действительным указателем, начиная с C ++ 17?

(В отношении этого вопроса и ответа .) До стандарта C ++ 17 в [basic.compound] / 3 было включено следующее предложение : Если объект типа T расположен по адресу A, говорят, что указатель типа cv T *, значением которого является адрес A, указывает на этот объект, независимо от того, как было...

79
Как эмулировать EBO при использовании необработанного хранилища?

У меня есть компонент, который я использую при реализации низкоуровневых универсальных типов, которые хранят объект произвольного типа (может быть, а может и не быть типом класса), который может быть пустым, чтобы воспользоваться преимуществами оптимизации пустой базы : template <typename T,...

53
Как получить адрес лямбда-функции C ++ внутри самой лямбды?

Я пытаюсь выяснить, как получить адрес лямбда-функции внутри себя. Вот пример кода: []() { std::cout << "Address of this lambda function is => " << ???? }(); Я знаю, что могу перехватить лямбду в переменной и напечатать адрес, но я хочу сделать это на месте, когда эта анонимная...

18
Значения лямбда-замыкания могут быть переданы как ссылочные параметры rvalue.

Я обнаружил, что lvalueлямбда-замыкания всегда можно передать в качестве rvalueпараметров функции. Смотрите следующую простую демонстрацию. #include <iostream> #include <functional> using namespace std; void foo(std::function<void()>&& t) { } int main() { // Case 1:...

17
Непрерывное перечисление C ++ 11

Есть ли способ проверить в C ++ 11, является ли перечисление непрерывным ? Полностью допустимо указывать значения enum, которых нет. Есть ли такая особенность, как черта типа в C ++ 14, C ++ 17 или, может быть, C ++ 20, чтобы проверить, является ли enum непрерывным? Это будет использоваться в...

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

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

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

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

11
Может ли переменный шаблон передаваться как аргумент шаблона шаблона?

Следующий бессмысленный пример не компилируется, но есть ли другой способ передать шаблон переменной в качестве аргумента шаблона шаблона? template<typename T> constexpr auto zero = T{0}; template<typename T, template<typename> auto VariableTemplate> constexpr auto add_one() {...

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

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

10
Почему нельзя использовать диапазоны для функциональности библиотеки каналов?

Джонатан Боккара (автор Fluent C ++ ) написал библиотеку под названием pipe . Эта «труба», как гласит главная страница репозитория, не похожа на использование диапазонов, даже если она выглядит одинаково: она не основана на ленивом вытягивании, а скорее на энергичном толчке. Но заявлено, что нельзя...

9
Передача указателя на функцию из массива указателей на функцию в качестве аргумента шаблона

Я хотел бы передать указатель на функцию из массива указателей на функцию в качестве аргумента шаблона. Кажется, мой код компилируется с использованием MSVC, хотя Intellisense жалуется, что что-то не так. И gcc, и clang не могут скомпилировать код. Рассмотрим следующий пример: static void test() {}...

9
Генерация лямбда-кода на C ++ с помощью Init Capture на C ++ 14

Я пытаюсь понять / уточнить код кода, который генерируется, когда перехваты передаются лямбдам, особенно в обобщенных перехватах инициализации, добавленных в C ++ 14. Дайте следующие примеры кода, перечисленные ниже, это мое текущее понимание того, что сгенерирует компилятор. Случай 1: захват по...