首页 > 解决方案 > 在模板参数列表中使用 sizeof... 时“模板参数太少”(MSVC 2017)

问题描述

以下最小示例不基于当前的 MSVC 2017 (19.16)。它确实建立在 MSVC 2015 和旧版本的 2017 (19.14)、GCC、Clang 和 ICC 之上。所以我怀疑这是一个编译器错误。它有效吗?如果不是,为什么?

#include <array>
#include <utility>

template<int... Is>
auto foo(std::integer_sequence<int, Is...>)
{
    return std::array<int, unsigned(sizeof...(Is))>{ Is... };
}

std::array<int, 3> bar()
{
    return foo(std::make_integer_sequence<int, 3>());
}

有效的变体:

标签: c++visual-c++c++14

解决方案


绝对是编译器错误。但是,它似乎已修复。使用 Visual Studio 2019(MSVC 版本 19.20.27508.1)在此处构建...


推荐阅读