带有变异模板的更多相关类型



这是昨天的问题,我给了Visual Studio 2013无法处理的一些C 代码, @Galop1n友好地提供了解决方法,该解决方案非常适合这种情况。但是现在我走了一点点,视觉工作室再次给我带来了悲伤。

template <typename T>
using ValueType = typename T::value_type;
template<typename... Containers>
void
foo(const Containers &...args) {
    std::tuple<ValueType<Containers>...> x;
}
template<typename... Containers>
struct Foo {
    std::tuple<ValueType<Containers>...> x;
};

每当我尝试实例化函数模板或类模板foo时,我都会收到这两个消息:

test.cpp(21):错误C3546:'...':没有参数包可以展开

test.cpp(21):错误c3203:'valueType':无专业的别名模板不能用作模板参数'_ types'的模板参数,期望真实的类型

在每种情况下(实例化foo或实例化foo),两个消息都指向定义" x"的行。

更新:我的Microsoft Bug报告现在(在其附件中)此问题的所有基本变体。因此,这将是要注意修复的地方。

也许在VS2013上的工作(更多详细:/):

template<typename... Containers>
void foo(const Containers &...args) {
    std::tuple<typename std::decay<decltype(*args.begin())>::type...> x;
}
template<typename... Containers>
struct Foo {
    std::tuple<typename std::decay<decltype(*std::declval<Containers>().begin())>::type...> x;
};

相关内容

  • 没有找到相关文章

最新更新