Size: a a a

cxx.Дискуссионная

2020 April 18

RM

Roy Mustang in cxx.Дискуссионная
Я прав?
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
Мув делает T&&, а под T у тебя может быть и U&. Получишь U&&&=U&. Никаких rvalue из lvalue не получишь
Это форвард так делает
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Roy Mustang
Я прав?
Да
источник

TS

Till Schneider in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
Мув делает T&&, а под T у тебя может быть и U&. Получишь U&&&=U&. Никаких rvalue из lvalue не получишь
Не получит, будет U&&
источник

RM

Roy Mustang in cxx.Дискуссионная
Ну значит не зря просрал пол дня на чтение
источник

O

Ofee in cxx.Дискуссионная
Увы, 42prvalue, так что это не то, что я хочу
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Roy Mustang
в случае с template не всегда && - это rvalue
Если он вида T&&, где T - параметр шаблона, или в auto&& var = init();
источник

RM

Roy Mustang in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
Мув делает T&&, а под T у тебя может быть и U&. Получишь U&&&=U&. Никаких rvalue из lvalue не получишь
В каком то из стандартов это уже так не работает
источник

RM

Roy Mustang in cxx.Дискуссионная
Там же remove_reference используется
источник

RM

Roy Mustang in cxx.Дискуссионная
Так что будь там хоть 10 &&, он приводится к lvalue, а затем уже к &&
источник

RM

Roy Mustang in cxx.Дискуссионная
Если конечно используется move
источник

TS

Till Schneider in cxx.Дискуссионная
Roy Mustang
Так что будь там хоть 10 &&, он приводится к lvalue, а затем уже к &&
Какой мы делаем вывод?  
@urandon не знает плюсы?
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Ofee
Так, сейчас будет совершенно странный вопрос, точно не в прод
int a = 42;
int& b = a;
foo(a);
foo(b);

Есть способ вызвать разные перегрузки/специализации foo()?
Нет
источник

RM

Roy Mustang in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
Если он вида T&&, где T - параметр шаблона, или в auto&& var = init();
auto&& разве не приводится к auto& или к auto&& в зависимости от того что возвращает init ?
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Till Schneider
Какой мы делаем вывод?  
@urandon не знает плюсы?
Да, @urandon писал год на gcc 4.2.1 и забыл плюсы^WC++11
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Оно работает так же, как и forwarding reference
источник

RM

Roy Mustang in cxx.Дискуссионная
Еще я вычитал что const auto& test = 55; аналогичен
auto obj = 55;
const auto &test = obj
источник

RM

Roy Mustang in cxx.Дискуссионная
То есть, под капотом такая реализация, хз правда это или нет
источник

RM

Roy Mustang in cxx.Дискуссионная
из источников так говорится
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Till Schneider
Какой мы делаем вывод?  
@urandon не знает плюсы?
Вывод такой: видишь легаси и херовую инфру — БЕГN, а то забудешь кресты как @urandon
источник