Результаты поиска по запросу "c++14"

5 ответов

@ Jarod42 хорошая мысль

я есть следующая функция, которая может принимать N аргументов разных типов и пересылать их N функциям, шаблонным для каждого отдельного типа, таким образом (пример с двумя аргументами): template <typename T1, typename T2> bool func(int& ...

2 ответа

@NirFriedman Нет никаких исключений - просто все, что вы используете в постоянном выражении, должно использоваться в постоянном выражении. Если вы не используете его, это не должно быть.

раньше я использовал такой код, и ясно, что у компилятора достаточно информации для работы, я не совсем понимаю, почему он компилируется: template <class T, class I> auto foo(const T& t, I i) { return std::get<i>(t); } int main() { std::cerr << ...

3 ответа

 Конструкторы.

ализация объектов (экземпляров классов или структур) в C ++ может выполняться различными способами. Некоторые синтаксисы вызываютпрямая инициализациявашего объекта, другие синтаксисы приводят ккопия инициализация, С участиемкопирования элизия ...

ТОП публикаций

3 ответа

Извините, нет, это не ясно из текста. Вы сделали несколько интересных утверждений, но еще не подкрепили их какими-либо доказательствами.

оложим, у меня есть три скомпилированных объекта, все произведенныетот же компилятор / версия: A был скомпилирован со стандартом C ++ 11B был скомпилирован со стандартом C ++ 14C был скомпилирован со стандартом C ++ 17Для простоты предположим, ...

1 ответ

 используется в ассоциативных контейнерах и т. д., однако, требуется умение сравнивать произвольные указатели, даже если это дороже.

роса: Правильно ли сформирован следующий код с определенным поведением? Есть ли возможная реализация C ++, в которой он может утверждать? Код (c ++ 11 и выше): #include <cassert> #include <utility> #include <ciso646> template<class T> ...

2 ответа

Если я что-то упустил, gcc и clang здесь верны.

ющий код принят GCC 7.2 и clang 5.0.0, но отклонен Microsoft VS 2017 15.5.0 Preview 5 и компилятором 19 Intel C ++: struct S { }; constexpr int f(S) { return 0; } int main() { auto lambda = [](auto x) { constexpr int e = f(x); }; lambda(S{}); ...

3 ответа

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

ношенииэтот вопрос и ответ [https://stackoverflow.com/questions/48058545/are-there-any-guarantees-for-unions-that-contain-a-wrapped-type-and-the-type-its/48060029#48060029] .) До стандарта C ++ 17 следующее предложение было включено ...

1 ответ

Хорошо, я вернусь к asio docs, попробую еще раз понять их. Видимо, мне все еще не хватает чего-то фундаментального, но я не знаю, что это такое. Тем не менее, я ценю ваше время.

опросКак избежать гонки данных при использовании двух потоков для отправки и получения черезasio::ip::tcp::iostream? дизайнЯ пишу программу, которая используетasio::ip::tcp::iostream для ввода и вывода. Программа принимает команды от ...

2 ответа

Это определенно проясняет ситуацию. Я бы, наверное, никогда не подошел бы к этому самому анализу стандарта. Я думаю, что понял, спасибо!

отрим простой пример: template <class T> struct tag { }; int main() { auto foo = [](auto x) -> decltype(bar(x)) { return {}; }; tag<int> bar(tag<int>); bar(tag<int>{}); // <- compiles OK foo(tag<int>{}); // 'bar' was not declared in this scope ...

1 ответ

over.match.ctor говорит: «Для прямой инициализации или инициализации по умолчанию, которая не находится в контексте инициализации копирования, все функции-кандидаты являются конструкторами класса инициализируемого объекта. Для инициализации копирования функции-кандидаты все конвертирующие конструкторы этого класса. Список аргументов - это список выражений или выражение присваивания инициализатора. " Это означает, что мы рассматриваем только конвертирующие конструкторы.

код прекрасно компилируется с GCC 5.X, MSVC, но GCC 6.X выдает ошибку: "преобразование в 'a' из списка инициализаторов будет использовать явный конструктор 'a :: a ()'"лязг"выбранный конструктор явно в ...