Что такое умный указатель и когда его следует использовать?
Я только что закончил слушать интервью подкаста радиоинженерии по программному обеспечению со Скоттом Мейерсом относительно C ++ 0x . Большинство новых функций имело смысл для меня, и сейчас я на самом деле рад C ++ 0x, за исключением одного. Я
...В C ++ 03 выражением является либо значение , либо значение .
В C ++ 11 выражение может быть:
Две категории стали пятью категориями.
Хорошие ссылки приветствуются.
При совершенной пересылке std::forward
используется для преобразования именованных ссылок rvalue t1
и t2
в неназванные ссылки rvalue. Какова цель сделать это? Как это повлияет на вызываемую функцию inner
, если мы оставим t1
& amp; t2
как lvalues?
template
void
... Я пытаюсь понять rvalue ссылки и переместить семантику C ++ 11.
В чем разница между этими примерами, и какой из них не будет делать векторные копии?
std::vector return_vector(void)
{
std::vector tmp {1,2,3,4,5};
return tmp;
}
std::vector &&rval_ref =
... Пожалуйста, обратите внимание на обновления в конце этого поста.
Обновление: Я создал публичный проект на GitHub для этой библиотеки!
Я хотел бы иметь один шаблон, который раз и навсегда позаботится о красивой печати всех контейнеров STL через operator<<
. В
У меня есть класс
template
class Matrix {
// ....
};
Я хочу сделать typedef
, который создает Vector
(вектор столбца), который эквивалентен Matrix
с размерами N и 1. Как то так:
typedef Matrix Vector;
, который вызывает ошибку компиляции.
...Мне кажется, что наличие «функции, которая всегда возвращает 5» нарушает или ослабляет значение «вызова функции». Должна быть причина, или необходимость в этой возможности, иначе ее не будет в C ++ 11. Почему это там?
// preprocessor.
#define MEANING_OF_LIFE 42
//
... Например:
int a = 12;
cout << typeof(a) << endl;
Ожидаемый результат:
int
Я не задаю этот вопрос из-за преимуществ сборки мусора в первую очередь. Моя главная причина, по которой я спрашиваю об этом, состоит в том, что я знаю, что Бьярн Страуструп сказал, что C ++ будет иметь сборщик мусора в определенный
...Краткий пример:
#include
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 <<
... Возможный дубликат:
В чем разница между #include & lt; filename & gt; и #include «имя файла»?
В чем разница между угловой скобкой < >
и двойными кавычками " "
при включении заголовочных файлов в C ++?
Я имею в виду,
...Когда функция должна получить shared_ptr
(из boost или C ++ 11 STL), вы передаете ее
по константной ссылке: void foo(const shared_ptr& p)
или по значению: void foo(shared_ptr p)
?
Я бы предпочел первый метод, потому что я подозреваю, что
...В C ++ 11 есть ли способ шаблона лямбда-функции? Или это слишком специфично для шаблонов?
Я понимаю, что вместо этого я могу определить классический шаблонный класс / функтор, но вопрос больше похож на: позволяет ли язык шаблонизировать лямбда-функции?
C ++ 11 вводит пользовательских литералов , которые позволят ввести новый литеральный синтаксис на основе существующих литералов (int
, hex
, string
, float
), так что любой тип сможет иметь литеральное представление.
Примеры:
// imaginary numbers
std::complex operator
... Рассмотрим случай шаблонной функции с переменными аргументами шаблона:
template Tret func(const T&... t);
Теперь у меня есть кортеж t
значений. Как мне вызвать func()
, используя значения кортежа в качестве аргументов? Я читал о функциональном объекте bind()
с функцией call()
Я прошу уловку шаблона, чтобы определить, есть ли у класса определенная функция-член данной подписи.
Проблема похожа на приведенную здесь http: // www. gotw. са / gotw / 071. HTM но не то же самое: в пункте книги Саттера он ответил
...например:
Beta_ab&&
Beta::toAB() const {
return move(Beta_ab(1, 1));
}
Я новичок в C ++ 11. Я пишу следующую рекурсивную лямбда-функцию, но она не компилируется.
#include
#include
auto term = [](int a)->int {
return a*a;
};
auto next = [](int a)->int {
return ++a;
};
auto sum =
...