Size: a a a

2021 March 04

AS

Anatoly Shirokov in pro.cxx
а дальше уже выбор перегрузки
источник

AS

Anatoly Shirokov in pro.cxx
что для  int&, что для float& нет ниодного подходящего кандината
источник

AD

Andrey Davydov in pro.cxx
Liber Azerate
Здесь выполняется два преобразования, в целом. Lvalue-to-rvalue и float-integer. Как минимум обычно выполняется максимум одно
http://eel.is/c++draft/conv#def:conversion_sequence,standard
standard conversion sequence может содержать до 4-х конверсий из разных групп
источник

LA

Liber Azerate in pro.cxx
Andrey Davydov
http://eel.is/c++draft/conv#def:conversion_sequence,standard
standard conversion sequence может содержать до 4-х конверсий из разных групп
Ладно, тогда у меня вопросов нет
источник

SK

Stas Koynov in pro.cxx
Anatoly Shirokov
что для  int&, что для float& нет ниодного подходящего кандината
тогда почему float&& -> float выбрали int&&
а int&& -> int выбрал float&&,
почему перегрузка float&& подходит больше к int чем к float
источник

AS

Anatoly Shirokov in pro.cxx
Stas Koynov
тогда почему float&& -> float выбрали int&&
а int&& -> int выбрал float&&,
почему перегрузка float&& подходит больше к int чем к float
я поправил свое сообщение
источник

SK

Stas Koynov in pro.cxx
ладно, я просто не дорос да таких вещей. я просто что-то прям ухватить не могу.
источник

NK

Nikolay Kononov in pro.cxx
Anatoly Shirokov
что для  int&, что для float& нет ниодного подходящего кандината
я правильно понял, что с точки зрения перегрузки f(int&) для f(int&&), f(float&&) эти перегрузки равнозначны и компилятор выбирает первую попавшуюся?
источник

bt

baby tonight in pro.cxx
Stas Koynov
ладно, я просто не дорос да таких вещей. я просто что-то прям ухватить не могу.
https://youtu.be/pjo8iZQWLMY тут эти моменты хорошо поясняются
источник

LA

Liber Azerate in pro.cxx
Nikolay Kononov
я правильно понял, что с точки зрения перегрузки f(int&) для f(int&&), f(float&&) эти перегрузки равнозначны и компилятор выбирает первую попавшуюся?
Нет. Тут как раз объяснение буквально это: https://t.me/ProCxx/433304
Выбираются именно такие перегрузки из-за последовательности возможных преобразований
источник

SK

Stas Koynov in pro.cxx
Nikolay Kononov
я правильно понял, что с точки зрения перегрузки f(int&) для f(int&&), f(float&&) эти перегрузки равнозначны и компилятор выбирает первую попавшуюся?
если у вас только для float&& то выбрать он как раз не может, если вы передадите 1.0f ибо ошибка! а вот 1 пожайлуста. и наоборот
источник

AS

Anatoly Shirokov in pro.cxx
Nikolay Kononov
я правильно понял, что с точки зрения перегрузки f(int&) для f(int&&), f(float&&) эти перегрузки равнозначны и компилятор выбирает первую попавшуюся?
lvalue int& не может быть преобразован в rvalue int&&, поэтому единственным кандинатом из перегруженных остается f(float&&) с одним преобразованием во float, аналогично для float
источник

NK

Nikolay Kononov in pro.cxx
Liber Azerate
Нет. Тут как раз объяснение буквально это: https://t.me/ProCxx/433304
Выбираются именно такие перегрузки из-за последовательности возможных преобразований
ага, понятно
источник

NK

Nikolay Kononov in pro.cxx
спасибо
источник

S

Stepan in pro.cxx
интересненько
источник

s

std::slavik in pro.cxx
Liber Azerate
В том, что конечный автомат для них строится в рантайме, а не компайлтайме, что занимает дополнительное время
а как недетерминированный конечный автомат в компайл тайме построить?
источник

AS

Alex Sandrov in pro.cxx
кстати, про конечные автоматы - в плюсах(или в бусте) есть что-то, что помогло бы реализовать?
источник

s

std::slavik in pro.cxx
в etl есть)
источник

AS

Alex Sandrov in pro.cxx
Embedded Template Library?
источник

s

std::slavik in pro.cxx
Alex Sandrov
Embedded Template Library?
да, там прям FSM есть
источник