gpt4 book ai didi

c++ - VS2015错误C2976

转载 作者:行者123 更新时间:2023-11-30 05:28:07 26 4
gpt4 key购买 nike

VisualStudio 无法编译此代码(错误 C2976)

但是 GCC 和 Clang 可以编译这段代码

为什么???

#include <iostream>
#include <map>

template <typename... ARGS>
void Func(const std::map<ARGS...>& m)
{
//...
}

template <typename T>
void Func(const T& t)
{
//...
}

int main()
{
std::map<int, double> m;
Func(m); // error C2976: 'std::map': too few template arguments
Func(123); // OK
return 0;
}

最佳答案

我的猜测是,这是因为 Visual Studio 2015 不完全支持嵌套可变参数模板,并且无法正确推断类型。

作为解决方法,您必须明确指定类型,因此您可以使用 Func<std::map<int, double>>(m); , Func<int, double>(m);甚至 Func<decltype(m)>(m); (我推荐最后一个)。

关于c++ - VS2015错误C2976,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36956725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com