Если вы имеете в виду что-то вроде:
Foo list[] = {
{ 0, int (*)(int x) { return x;} },
{ 1, 0 } // no func for this.
};
, то нет, это невозможно.Вы говорите о анонимных функциях , которые C ++ еще не поддерживает (по состоянию на август 2011 г.).
C ++ 0x добавляет поддержку лямбда-функций , что в значительной степени одно и то же, и ваш синтаксис, вероятно, будет выглядеть примерно так:
Foo list[] = {
{ 0, [](int x) { return x; } },
{ 1, 0 }
};
Однако, если вы намереваетесь просто хранить код и данные в непосредственной близости, то просто держите их в непосредственной близости(тот же исходный файл C с кодом, непосредственно предшествующим данным).