你能看到这个函数声明有什么问题吗?
template<typename... Containers>
std::tuple<typename Containers::value_type...>
foo(const Containers &...args);
当我试着打电话时,就像这样:
foo(std::list<int>(), std::vector<float>());
MSVC2013说error C2027: use of undefined type 'std::tuple<Containers::value_type>
。
我尝试使用“延迟返回”语法重写函数声明,但没有区别。
有什么办法可以实现这段代码的功能吗?
答案 0 :(得分:4)
您赢得了填写微软connect的错误报告的权利...代码在clang和gcc上没问题。
关于VS2013的解决方法,也许是gcc 4.7:
template <typename T>
using ValueType = typename T::value_type;
template<typename... Containers>
std::tuple<ValueType<Containers>...>
foo( const Containers &...args ) { return {}; }