Преимущества использования пользовательского литерала для строк вместо строкового литерала

тема строк в документации SO обычно говорила в разделе "Примечания": начиная с C++14, вместо использования "foo", рекомендуется использовать "foo"s, а s - строковый литерал, который преобразует const char *"foo" до std::string"foo". единственно ...

Почему символ пробела не был выбран для 14-значных разделителей C++?

начиная с C++14, благодаря n3781 (что само по себе не дает ответа на этот вопрос), мы можем написать следующий код: const int x = 1'234; // one thousand two hundred and thirty four цель состоит в том, чтобы улучшить такой код: const int y = 10000 ...

Почему 'std::initializer list' не определен как литеральный тип?

Это продолжение этого вопроса: законно ли объявлять объект constexpr initializer_list?. начиная с C++14,std::initializer_list класс имеет все свои методы, помеченные constexpr. Кажется естественным иметь возможность инициализировать экземпляр, выпол ...

Является ли std:: is unsigned: value хорошо определенным?

мне интересно, если std::is_unsigned<bool>::value хорошо определяется в соответствии со стандартом или нет? Я задаю вопрос, потому что typename std::make_unsigned<bool>::type Не определен. ...

Почему порядок подстановки аргументов шаблона имеет значение?

C++11 14.8.2 -Вывод Аргумента Шаблона -[temp.deduct] 7 подстановка происходит во всех типах и выражениях, которые используются в типе функции и в объявлениях параметров шаблона. Выражения включают в себя не только постоянные выражения, ...

Каково обоснование поведения decltype?

как я понял в C++11 decltype(expression) используется для вывода точно такого же типа данного выражения. Но когда выражение заключено в скобки само по себе, то выводит тип ссылка lvalue тип выражения. Например: int x; decltype(x) y = x; эквивалент ...

Почему инициализация массива пар все еще требует двойных скобок в C++14?

со стандартом C++14, инициализация std::array может идти с одной фигурной скобкой (см. http://en.cppreference.com/w/cpp/container/array): это, однако, не работает для std::array на std::pair. почему это работает: std::pair<int, int> p { 1, ...

Какие изменения, внесенные в C++14, потенциально могут сломать программу, написанную на C++11?

введение с C++14 (ака. C++1y) стандарт в состоянии, близком к окончательному, программисты должны спросить себя о обратной совместимости и проблемах, связанных с такими. вопрос в ответах на этот вопрос говорится, что стандарт имеет приложение пос ...

Является ли указатель с правильным адресом и типом все еще действительным указателем с C++17?

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

Различия между СТД::сделайте уникальный и std::уникальные ПТР

тут std::make_unique есть какие-либо преимущества эффективности, как std::makes_shared? по сравнению с ручным построением std::unique_ptr: std::make_unique<int>(1); // vs std::unique_ptr<int>(new int(1)); ...

Что такое const void?

описание std::is_void гласит: предоставляет постоянное значение члена, равное true, если T -тип void, const void, volatile пустота, или const volatile void. тогда что может быть const void или volatile void ? в этом ответе говорится, что co ...

Что такое прозрачные компараторы?

в C++14 ассоциативные контейнеры, похоже, изменились с C++11 – [ассоциативный.reqmts] / 13 говорит: шаблоны функций-членов find,count,lower_bound,upper_bound и equal_range не участвует в разрешении перегрузки, если тип . какова цель сделать ком ...

Как работает общая лямбда в C++14?

Как работает общая лямбда (auto ключевое слово как тип аргумента) в стандарте C++14? Он основан на шаблонах C++, где для каждого другого типа аргумента компилятор генерирует новую функцию с тем же телом, но замененными типами (полиморфизм времени к ...

Каковы некоторые виды использования decltype (auto)?

В c++14 the фразеологизм. как правило, его использование разрешить auto объявления для использования decltype правила по данному выражению. Поиск примеров "хорошего" использования идиомы я могу думать только о таких вещах, как следующее (by Скот ...

Может ли современный C++ получить вам производительность бесплатно?

иногда утверждается, что C++11/14 может повысить производительность даже при простой компиляции кода C++98. Обоснование обычно выполняется в соответствии с семантикой перемещения, так как в некоторых случаях конструкторы rvalue автоматически генериру ...

Как реализовать классические алгоритмы сортировки в современном C++?

The std::sort алгоритм (и его кузены std::partial_sort и std::nth_element) из стандартной библиотеки C++ находится в большинстве реализаций сложное и гибридное объединение более элементарных алгоритмов сортировки, такие как сортировка выбором, сортир ...

Можно ли игнорировать функцию типа конечного возврата в c++11 в пользу функции вывода типа возвращаемого значения в c++14?

Когда я пропускаю возвращаемый тип выражения Следующий код в C++11: auto function(X x, Y y) -> decltype(x + y) { return x + y; } Равно следующему коду в C++14: decltype(auto) function(X x, Y y) { return x + y; } Но дополнительно мо ...

У меня возникли некоторые трудности с интерпретацией пункта 5.2.1.1 в параграфе §8.5.3/5 N4140.

Фрагмент ниже компилирует #include <iostream> int& f() { static int i = 100; std::cout << i << '\n'; return i; } int main() { int& r = f(); r = 101; f(); } И вывести значения (живой пример) 100 101 Тепер ...

Исключить первые N аргументов из пакета параметров

У меня есть функция foo, которая вызывает функцию bar с подмножеством типов перешел в foo'шаблонов с переменным количеством аргументов. Например: template <typename... T> void foo() { // ... template <size_t start_idx, typename... T> ...

Как задержать создание экземпляра статического элемента данных в Visual C++?

Следующий код работает с GCC и Clang, но не с Visual C++: #include <type_traits> struct MyType { static constexpr std::size_t it = 10; }; struct MyType2 { }; template<typename T> struct Type2 { static constexpr std::size_t it ...