Partial application in C++
Aug. 25th, 2012 07:31 pmЗацікавитись проблемою partial application у C++ мене заставила оказія на роботі і оця стаття на хабрі: "Частичное применение и каррирование в C++". Ну про статтю говорити багато не буду — візьміть та прочитайте. Скажу тільки що автор використовує новий стандарт лише частково, у рамках підтримки його Microsoft Visual Studio 2010. Не використовує навіть variadic templates. На робочій оказії ж зупинюсь детальніше.
В рамках впровадження на роботі Boost.Signal2 замість дерев’яного велосипеду на паровій тязі я стикнувся з проблемою втикання методів класів у слот. Проблема стара як світ і полягає у наявності неявномого параметра this який треба передати явно. Всі, мабуть, знають що методи класів у плюсах це, насправді, звичайнісінькі функції яким неявно першим параметром передається вказівник на об’єкт якому вони належать. Невільні функції, страждають на панщині, що тут поробиш. Якщо мислити на рівні старого-доброго C чи мови ассемблера (від якої він не далеко відкотився) — все в порядку. Втикаємо вказівник на об’єкт (чи, пардон, на структуру) у перший параметр (чи кладемо його у стек, чи записуємо у регістр) і ніяких проблем. Та у плюсах все не так. Не проста у нас функція.
( Картинок не буде )