- 1
- 2
- 3
- 4
- 5
template <typename T, typename U>
auto operator()(T&& t, U&& u) const
-> decltype(forward<T>(t) + forward<U>(u)) {
return forward<T>(t) + forward<U>(u);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1007
template <typename T, typename U>
auto operator()(T&& t, U&& u) const
-> decltype(forward<T>(t) + forward<U>(u)) {
return forward<T>(t) + forward<U>(u);
}
ohlol 17.10.2011 22:13 # 0
niXman 19.10.2011 19:19 # 0
absolut 19.10.2011 22:33 # +5
absolut 17.10.2011 22:16 # 0
ohlol 17.10.2011 22:18 # 0
absolut 17.10.2011 22:31 # 0
Не вижу тут никаких проблем с перегрузкой бинарного "+" для двух разных типов.
AxisPod 18.10.2011 06:33 # +1
class string{
public:
string(){...}
string(const char *str){...}
string(const string& str){...}
...
string& operator+(const string& str){...}
string& operator+(const char *str){...}
}
string b = "aaaaa";
string a = "a" + b; // опа, не компилится.
а вот с оператором скомпилится, будет неявное преобразование.
Хотя в примере пестец.
absolut 18.10.2011 06:37 # −1
AxisPod 18.10.2011 07:02 # 0
AxisPod 18.10.2011 07:03 # 0
отвлекали, ступил, криво написал, про friend функцию имел ввиду.
ohlol 18.10.2011 08:03 # 0
В С++ не может быть перегрузки операторов для исключительно стандартных типов, а здесь U и T могут быть стандартным.
absolut 18.10.2011 09:14 # 0
Если же перегрузка operator+ будет производиться на глобальном уровне, то да, для стандартных типов работать не будет. Однако, если хотя бы один из них будет пользовательским типом, то всё ок.
guest 18.10.2011 10:03 # 0
Это верно, но я не понимаю в чем вопрос? Человеку нужно сделать функтор что-то складывающий - он это и сделал. Ему не нужен оператор +.
absolut 18.10.2011 10:39 # 0
Lure Of Chaos 17.10.2011 22:31 # 0
absolut 17.10.2011 22:34 # +1
Lure Of Chaos 17.10.2011 22:39 # +3
absolut 17.10.2011 22:55 # +1
ohlol 18.10.2011 07:59 # 0
мне было лень регистрироваться и знакомый отдал мне этот ник, сказав что он особенный...
bot-minurast 18.10.2011 09:26 # +1
guest 18.10.2011 10:07 # 0
С чего ты взял? Нет. Просто мой знакомый.
>Сипипи двести тридцать второго...
RS-232?
Ну он мне сказал, что это не он. Он вообще интернеты не любит.
bot-minurast 18.10.2011 10:08 # +3
guest 18.10.2011 10:11 # 0
AnimeGovno-_- 19.10.2011 10:46 # −2
bugmenot 18.10.2011 12:11 # 0
Lure Of Chaos 18.10.2011 12:14 # 0
bugmenot 18.10.2011 14:17 # +1
Очевидно же, что фаггот, создающий нытик-треды про "я ухожу навсигда" напиздил и ресетнул пассы. Они всегда одинаково пытаются подчеркнуть свою непохожесть на других.
guest 18.10.2011 12:17 # 0
guest 18.10.2011 13:36 # +1
roman-kashitsyn 18.10.2011 13:37 # 0
bot 18.10.2011 13:46 # 0
guest 18.10.2011 13:57 # 0
bot 18.10.2011 14:23 # −1
guest 18.10.2011 14:57 # 0
bot 18.10.2011 15:07 # 0
Dr_Offset 19.10.2011 09:42 # +4
AnimeGovno-_- 19.10.2011 10:13 # −6
SmackMyBitchUp 19.10.2011 10:40 # 0
bot 19.10.2011 11:58 # +2
SmackMyBitchUp 19.10.2011 12:00 # 0
3.14159265 19.10.2011 17:18 # 0
Но эта фраза не настолько мементична.
AnimeGovno-_- 19.10.2011 10:43 # −9
bot 19.10.2011 11:59 # +2
AnimeGovno-_- 19.10.2011 12:35 # −8
gegMOPO4 18.10.2011 11:18 # 0
absolut 18.10.2011 11:32 # 0
roman-kashitsyn 18.10.2011 11:42 # 0
сами знаете кто
gegMOPO4 18.10.2011 11:42 # 0
forward<T>(t).operator+(forward<U>(u)) или operator+(forward<T>(t), forward<U>(u))? Для разных типов будет по-разному.
absolut 18.10.2011 11:52 # 0
gegMOPO4 18.10.2011 12:11 # 0
absolut 18.10.2011 12:48 # 0
Но я все равно не понимаю, зачем знать где он определен.
gegMOPO4 18.10.2011 14:26 # 0
bot-minurast 18.10.2011 14:32 # 0
rat4 18.10.2011 14:44 # 0
bot-minurast 18.10.2011 15:03 # 0
"+" в данном контексте, означает одно(например, конкатенацию строк ) , а в другом контексте - другое (например, добавление свойств объекту)
rat4 18.10.2011 15:25 # +1
bot-minurast 18.10.2011 15:30 # +1
http://mults.spb.ru/mults/?id=2305
rat4 18.10.2011 16:17 # −1
Канонический пример запутывания:
absolut 18.10.2011 14:53 # +1
Главное условие - чтобы в прикладной области было принято такое трактование.
bot-minurast 18.10.2011 15:03 # 0
absolut 18.10.2011 15:10 # 0
bot-minurast 18.10.2011 15:35 # 0
Lure Of Chaos 18.10.2011 20:06 # −1
gegMOPO4 18.10.2011 15:26 # +2
Киллер-фичей Фортрана в своё время была возможность записи арифметических выражений в естественной форме. Теперь это есть в 99.9% языков и воспринимается как само собой разумеющееся.
absolut 18.10.2011 14:57 # 0
gegMOPO4 18.10.2011 15:20 # 0
forward<T>(t).operator+(forward<U>(u)) или operator+(forward<T>(t), forward<U>(u))?
absolut 18.10.2011 19:30 # −1
guest 18.10.2011 14:58 # −5
Ай йа йай. В своем языке плюсисты разобраться не можете...
krypt 18.10.2011 10:48 # +2
guest 18.10.2011 12:09 # +3
guest 18.10.2011 12:10 # +1
rat4 18.10.2011 14:13 # 0
TarasB 18.10.2011 14:45 # 0
что это за поебень? из сипипоха?
absolut 18.10.2011 14:59 # −4
guest 18.10.2011 15:15 # +4
absolut 18.10.2011 15:24 # −4
guest 18.10.2011 16:43 # +3
absolut 18.10.2011 19:33 # −3
roman-kashitsyn 18.10.2011 19:44 # +6
http://img-fotki.yandex.ru/get/3210/eugenio19.1d/0_200da_e1c2bc99_L.jpg
absolut 18.10.2011 21:19 # +4
SmackMyBitchUp 18.10.2011 21:21 # +3
Lure Of Chaos 18.10.2011 21:27 # +2
niXman 19.10.2011 19:19 # 0