I feel like a mad genius, but that probably means this is overly complex. I even had to look up a stack overflow answer for how to store a tuple and call a function with its contents: http://stackoverflow.com/a/7858971/1959975
I also couldn't make this work with std::forward, which would be nice.
This implementation really feels like overkill to me, and it just seems like there should be a simpler way of doing it, but I'm not fully sure how. I think a good way might be making a separate inner object for each member, but I don't know if that is more or less convoluted.