I'm not saying this does much for readability, but it does what you want using Boost.Preprocessor:
#define DECLARE_VAR(r, data, type) type BOOST_PP_CAT(instance,type);
#define EXPAND(seq) BOOST_PP_SEQ_FOR_EACH(DECLARE_VAR,,seq)
Now you can define your list of fruits as follows:
#define FRUITS (Apple)(Banana)(Plum)
And then you can use EXPAND(FRUITS)
to generate the variable declarations. For a full example, see here.
Per request, the same technique used to print one fruit per line:
#include <iostream>
#include <boost/preprocessor.hpp>
#define PER_LINE(r, data, type) BOOST_PP_STRINGIZE(type) "\n"
#define EXPAND(seq) BOOST_PP_SEQ_FOR_EACH(PER_LINE,,seq)
#define FRUITS (Apple)(Banana)(Plum)
int main() {
std::cout << EXPAND(FRUITS);
}