Результаты поиска по запросу "c++11"
Избегайте вложенных циклов for при поиске в пространстве параметров
При написании модульных тестов я часто хочу вызвать функцию с комбинацией параметров. Например, у меня есть функция, которая объявлена как void tester_func(int p1, double p2, std::string const& p3);и некоторые ...
Что произойдет, если я получу локальную переменную по ссылке, и она выйдет из области видимости?
Предположим, я использую лямбду в качестве функции обратного вызова, и при создании лямбды я фиксирую переменную локальной функции по ссылке. Теперь предположим, что лямбда-объект не выполняется до тех пор, пока локальная переменная функции не ...
C ++ 11: Почему разрешено присваивать значения?
Из того, что я понимаю, причина, по которой опасно возвращать ссылки на rvalues из функций, обусловлена следующим кодом: T&& f(T&& x) { do_something_to_T(x); return static_cast<T&&>(x); } T f(const T& x) { T x2 = x; do_something_to_T(x2); return ...
Является ли конструкция «передача по значению и перемещению» плохой идиомой?
Так как у нас есть семантика перемещения в C ++, в настоящее время это обычно делается void set_a(A a) { _a = std::move(a); }Причина в том, что еслиa является значением, копия будет удалена, и будет только один ход. Но что произойдет, еслиa ...
мы можем сделать глубокую связь с c ++ 1y std :: tie () -подобной функцией?
Есть ли способ написать вариантstd::tie в C ++ 11 / 1y, который тесно связан с кортежем. То есть тот, в которомtie((x,y),z) = make_tuple(make_tuple(1,2),3) связываетx, y, z в1, 2 and 3соответственно как в следующем примере. Это было бы хорошо. ...
Как вы инициализируете (через списки инициализаторов) многомерный массив std :: в C ++ 11?
Я пытаюсь инициализировать двухмерные списки инициализаторов std :: array, однако компилятор говорит мне, что слишком много инициализаторов. например.: std::array<std::array<int, 2>, 2> shape = { {1, 1}, {1, 1} };Ошибка компилятора: ошибка: ...
Ошибка Visual C ++ 10.0 в std :: reference_wrapper?
Код: #include <functional> struct Foo { virtual void mf() = 0; }; struct Bar: Foo { virtual void mf() {} }; int main() { Bar o; std::reference_wrapper<Foo const> wrapper( o ); }Результат с MinGW g ++ 4.6.1: [d:\dev\test] > g++ foo.cpp ...
Почему вы не можете назначить пару из кортежа, но кортеж можно назначить из пары?
Я не понимаю, почему это законно назначатьtuple<X,Y>=pair<X,Y> Но это незаконно назначатьpair<X,Y>=tuple<X,Y> std::pair<int, double> x { 1 , 5.5}; std::tuple<int, double> y { 1 , 5.5}; int a; double b; std::tie(a,b) = x; std::tie(a,b) = y; x = ...
Запретить привязку шаблонов выражений к ссылкам rvalue
Я понимаю, что делать что-то вроде следующего: auto&& x = Matrix1() + Matrix2() + Matrix3(); std::cout << x(2,3) << std::endl; Будет вызывать тихую ошибку времени выполнения, если матричные операции используют шаблоны выражений (такие ...
карта, лямбда, remove_if
Итак, у меня проблема с алгоритмом std :: map, lambda и stl (remove_if). На самом деле, тот же код с std :: list или std :: vector работает хорошо. Мой тестовый пример: #include <map> #include <iostream> #include <algorithm> struct Foo { Foo() ...