However, going with that, the supplementary question is, how do I then discover if bar[0] is a symbol or not? I can't see any traits to test forbuiltin types...
You could use the fact that alias parameters can not be builtin types, like this:
template TestSymbol(alias a){}
__traits(compiles, TestSymbol!(bar[0]))
