- 1
// When F does not contain result_type, result_of<F(T1, T2, ..., TN)>::type is F::result<F(T1, T2, ..., TN)>::type when N > 0 or void when N = 0.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+9
// When F does not contain result_type, result_of<F(T1, T2, ..., TN)>::type is F::result<F(T1, T2, ..., TN)>::type when N > 0 or void when N = 0.
http://www.boost.org/doc/libs/1_54_0/libs/utility/utility.htm#result_of
> void when N = 0.
Создатели boost::result_of решили, что если функция принимает 0 аргументов, то она не может ничего возвращать кроме void.
guest 20.08.2013 16:34 # +1
LispGovno 20.08.2013 20:31 # 0
Ох кресты вы мои кресты... Когда я вас изучу - я стану стареньким, да?
Когда мы пишем result_of<F()>, то инстанцируются все operator() (со всеми const volatile и rvalue_this перегрузками), не смотря на то, что они не вызываются (а не должны, как это происходит при использовании result_of для унарной- энАрной функции). Создателей это расстроило и для std::result_of\boost::result_of они решили сделать, чтобы пользователи сами писали специализацию std::result_of для своих классов или не использовали нулярные функции, передавая туда фиктивный параметр.
blackhearted 21.08.2013 12:41 # −1
Не принимаешь аргументов - пиши руками, нехер глобальное состояние юзать без явного на то указания.
Функциональщико-бляди ведб должны быть довольны.
roman-kashitsyn 21.08.2013 13:04 # +2
vistefan 21.08.2013 13:42 # +1
bormand 21.08.2013 13:26 # +1
roman-kashitsyn 21.08.2013 13:45 # −1