(no subject)
Sep. 29th, 2011 12:31 pmрешил тут немножко размяться boost-ом.
Забавные там решения применяются. Например, объекту "функтор" можно присвоить (в частности) объект произвольного типа, имеющего оператор "круглые скобки" для вызова функции. При этом не требуется, чтобы этот объект наследовал какой-то стандартный интерфейс или чтобы этот оператор "круглые скобки" был виртуальной функцией. И... всё вызывается как надо.
Вообще, я себе чуть мозги не поломал, пока разглядел, где они там делают аллокацию памяти. Потому как с виду всё организовано так, будто они работают со статическими типами и всё кладут на стек, что в принципе невозможно. Я уже почти-почти поверил, что в boost и это возможно, когда наконец-то наткнулся на вызов new.
Забавные там решения применяются. Например, объекту "функтор" можно присвоить (в частности) объект произвольного типа, имеющего оператор "круглые скобки" для вызова функции. При этом не требуется, чтобы этот объект наследовал какой-то стандартный интерфейс или чтобы этот оператор "круглые скобки" был виртуальной функцией. И... всё вызывается как надо.
Вообще, я себе чуть мозги не поломал, пока разглядел, где они там делают аллокацию памяти. Потому как с виду всё организовано так, будто они работают со статическими типами и всё кладут на стек, что в принципе невозможно. Я уже почти-почти поверил, что в boost и это возможно, когда наконец-то наткнулся на вызов new.