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

3 ответа

 компилировать в соответствии с последним C ++ 0x Working Draft, но, конечно, реализации не было много времени для созревания, и мы ожидаем много ошибок.

отрим пример: #include <iostream> #include <functional> // std::function #include <vector> // std::vector #include <algorithm> // std::for_each int main(){ auto adder = [](int x) { return [&](int y) { return x+=y; }; }; std::vector ...

2 ответа

http://www.justsoftwaresolutions.co.uk/cplusplus/rvalue_references_and_perfect_forwarding.html

очень хорошо понимаюstd::move функция template <class T> typename remove_reference<T>::type&& move(T&& a) { return a; }Почемуremove_reference ? Может ли кто-нибудь дать мне простое объяснение?

1 ответ

Visual Studio 2010 также страдает от этой проблемы. Хороший обходной путь.

им классом, как Foo: struct Foo { static const int i = 9; };Я считаю, что GCC 4.5 отклонит следующее Foo f; int x = decltype(f)::i;Это будет работать, если я использую промежуточный typedef, такой как: typedef decltype(f) ftype; int x = ...

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

7 ответов

Если вам не нужна проверка границ, то сработает следующее.

ираю скорость с C ++ 0x и тестирую с g ++ 4.6 Я просто попробовал следующий код, думая, что он будет работать, но он не компилируется. Я получаю ошибку: incompatible types in assignment of ‘std::initializer_list<const int>’ to ‘const int ...

10 ответов

Когда лямбда захватывает по ссылке, запись в захваченных переменных является проблемой для концепции чистой функции, потому что все, что должна делать чистая функция, - это возвращать вывод, хотя лямбда не обязательно мутирует, потому что запись происходит с внешними переменными. Даже в этом случае правильное использование подразумевает, что если лямбда вызывается с тем же самым вводом снова, вывод будет одинаковым каждый раз, несмотря на эти побочные эффекты на переменные by-ref. Такие побочные эффекты являются всего лишь способами возврата некоторого дополнительного ввода (например, обновления счетчика) и могут быть преобразованы в чистую функцию, например, возвращая кортеж вместо одного значения.

ий пример: #include <iostream> int main() { int n; [&](){n = 10;}(); // OK [=]() mutable {n = 20;}(); // OK // [=](){n = 10;}(); // Error: a by-value capture cannot be modified in a non-mutable lambda std::cout << n << "\n"; // "10" }Вопрос: ...

3 ответа

Цена, которую вы платите за это, заключается в том, что вы должны вести тщательный учет. С простым старым назначением объединения данных было достаточно изменить «текущий тип», и чтение неправильного типа могло привести к искаженным данным, но не намного больше. При непростом удалении старых данных вы должны следить за текущим типом и вызывать конструкторы и деструкторы corect вручную, чтобы изменить текущий тип и правильно очистить объекты при уничтожении объединения в целом. Если вы попытаетесь прочитать или написать тип wring, могут произойти плохие вещи

ираюunrestricted unions как одна из функциональных возможностей, представленных в C ++ 11. Может ли кто-нибудь объяснить семантику и преимущества, которые она дает?

3 ответа

, как указано в документации (см. цитату выше), и может быть легко проверено:

ужно использоватьpopen в проекте, но я получаю: error: 'popen' was not declared in this scopeПохоже, GCC определяет__STRICT_ANSI__ под обоими-std=c++0x и (вопреки тому, что мало информации я смог найти)-std=gnu++0x, что приводит кpopen (а ...

2 ответа

 применяется только к собственным типам операндов.

сто заметил, что новый стандарт определяетmin(a,b) а такжеmax(a,b) без constexpr. Примеры из 25.4.7, [alg.min.max]: template<class T> const T& min(const T& a, const T& b); template<class T> T min(initializer_list<T> t);Разве это не жаль? Я ...

3 ответа

Но это зависит от компилятора (vc ++ throws, g ++ not).

елмало [https://stackoverflow.com/questions/4257683/stdbind-a-member-function-to-an-object-pointer] вопросов [https://stackoverflow.com/questions/5556183/make-c-crash-without-casting/5557843#5557843] которые относятся кstd::bad_function_call ...

1 ответ

howardhinnant.github.io/incomplete.html

опытке использоватьauto_ptr с типом, который был объявлен с предварительным объявлением, как это: class A; ... std::auto_ptr<A> a;деструкторA не называется (видимо, потому чтоauto_ptr внутреннеdeletes базовый указатель и деструктор для неполного ...