3

使用 Visual Studio Nov 2012 CTP,它支持可变参数模板(除其他外)。以下代码:

template<int, typename... Args>
void myfunc(Args... args)
{
}

template<>
void myfunc<1, float>(float)
{
}

产生以下错误:

错误 C2785:“void myfunc(Args...)”和“void myfunc(float)”具有不同的返回类型
错误 C2912:显式特化“void myfunc(float)”不是函数模板的特化

(是的,第一个很有趣)

所以我的问题是:

1)我在这里写合法的 C++11 吗?

2)如果是,有没有办法在提交之前找出这是否是 MSVC 中的一个已知错误?

4

1 回答 1

2
  1. 这是完全合法的代码;gcc-4.7.2 和 clang 3.0 都接受它。

  2. 尝试搜索Microsoft Connect

于 2012-12-11T09:31:30.323 回答