'Compilation failing in Visual Studio with template template parameter using non-type parameter pack

In Visual Studio I get this compiler error with the below code which I think should compile fine (gcc 11.2 and clang 14.0 compile it). The non-type parameter pack (auto...) means I should be able to pass in a template with any number of non-type template parameters, but the compilation only succeeds when passing in a template that uses a single non-type template parameter.

Is there something I'm missing that will make this work in Visual Studio?

I'm using "/std:c++latest" on Visual Studio 2019, version 16.11.12

error C3201: the template parameter list for class template 'testValues::twoParams' does not match the template parameter list for template parameter 'X'

  namespace testValues {
    template<template<auto...> class X>
    struct templatetemplateparam {};

    template<int i>
    struct oneParam {};
    using oneParam_t = templatetemplateparam<oneParam>;

    template<int i, int j>
    struct twoParams {};
    using twoParams_t = templatetemplateparam<twoParams>;
  }

The equivalent code with a specific non-type parameter or a type parameter pack does compile, if that's relevant:

  namespace testIntValues {
    template<template<int...> class X>
    struct templatetemplateparam {};

    template<int i>
    struct oneParam {};
    using oneParam_t = templatetemplateparam<oneParam>;

    template<int i, int j>
    struct twoParams {};
    using twoParams_t = templatetemplateparam<twoParams>;
  }

  namespace testTypes {
    template<template<typename...> class X>
    struct templatetemplateparam {};

    template<typename>
    struct oneParam {};
    using oneParam_t = templatetemplateparam<oneParam>;

    template<typename, typename>
    struct twoParams {};
    using twoParams_t = templatetemplateparam<twoParams>;
  }


Solution 1:[1]

I've reported this to MS at it looks like a bug in Visual Studio to me: https://developercommunity.visualstudio.com/t/Compilation-error-C3021-when-using-value/10015492

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Fulby