|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.02.2019, 17:43 | #1 |
Форумчанин
Регистрация: 24.01.2011
Сообщений: 774
|
Насколько хороша мысль принимать только rvalue аргументы?
В общем, я задумался, насколько хорошая мысль создавать публичный интерфейс только на move методах, если нам нужно как-то преобразовывать некий массив байт, например.
Вот пример: Код:
Стандартно в таких преобразователях я передаю аргумент по константной ссылке, за счёт чего есть гарантия, что оригинал не поменяется внутри функции, но появляется такой недостаток, как лишнее выделение памяти внутри функции, за счёт чего она ещё и теряет модификатор noexcept. Пример: Код:
Но всё это можно так же сделать так: Код:
Код:
В итоге, у меня два вопроса: 1) стоит ли писать вариант только с move вместо варианта передачи просто по значению, побуждая пользователя задумываться, надо ли ему сохранять старое значение или нет? 2) может ли компилятор провести оптимизацию сам и вызывать move конструктор вместо конструктора копирования в случаях: Код:
a.k.a. Angelicos Phosphoros
Мой сайт |
03.02.2019, 09:54 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Параметр не будет создан вообще - будет передана ссылка на уже созданный объект.
Сделайте две функции - одна с & другая с &&. Первая будет возвращать ссылку на свой параметр, вторая буде возвращать строку, но будет делать move. Вторая функция просто будет вызывать первую. А дальше уже делайте бенчмарки. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
натолкни на мысль | FIFAPES | Общие вопросы C/C++ | 31 | 03.10.2014 16:52 |
Натолкните на мысль! | Niklitel | Помощь студентам | 2 | 05.01.2014 15:17 |
с++ командная строка, Вывести все нечисловые аргументы, но выводит все аргументы чего-то, | nati_94 | Помощь студентам | 8 | 03.03.2013 19:23 |
Натолкните на мысль | Rebelition | Общие вопросы Delphi | 6 | 30.10.2012 14:42 |
Дайте мысль) | jawa250t | Общие вопросы Delphi | 4 | 09.02.2011 18:02 |