Нет такой вещи как "функция типа структуры", и ваш синтаксис объявления структуры действительно странный. Вы, кажется, путаете типы с объектами.
Вот то, что, я думаю, вам нужно, просто функция, которая возвращает экземпляр вашей eigen::Matrix
специализации (которую вы назвали foofoo
через псевдоним типа):
struct foo
{
double a, b, c;
};
using foofoo = eigen::Matrix<double, 1, 3>;
foofoo FOO()
{
foofoo result;
foo f;
// ... populate members of f ...
result << f.a, f.b, f.c;
return result;
}