You won the right to fill a bug report on microsoft connect… The code is ok on clang and gcc.
A workaround on VS2013 and maybe gcc 4.7 :
template <typename T>
using ValueType = typename T::value_type;
template<typename... Containers>
std::tuple<ValueType<Containers>...>
foo( const Containers &...args ) { return {}; }