Is there a way to replace the Xmacro idiom using C++11 features, and preferably not using the preprocessor? I was thinking tuple templates could be used, but I'm still trying to grok how those work.
XMacros are a general tool for doing a wide variety of things. Many of which (such as creating a list of enumerators, strings, etc) are well beyond the capabilities of templates of any kind.
There are probably some cases that you might find a way to replace with templates. But certainly not all of them.