gpt4 book ai didi

c++ - 将函数模板特化传递给可变参数模板函数

转载 作者:可可西里 更新时间:2023-11-01 18:37:14 25 4
gpt4 key购买 nike

我可以毫无问题地将函数模板特化的地址传递给常规模板函数:

template <typename T>
void f(T) {}

template <typename A, typename B>
void foo(A, B) {}

int main()
{
foo(&f<int>, &f<float>);
}

但是,当我尝试将相同的特化传递给可变参数模板时:

template <typename T>
void f(T) {}

template <typename... A>
void bar(A...) {}

int main()
{
bar(&f<int>, &f<float>);
}

我在使用 GCC 时遇到以下编译器错误(我尝试了 4.6.1 和 4.7.0):

test.cpp: In function 'int main()':
test.cpp:9:27: error: no matching function for call to 'bar(<unresolved overloaded function type>, <unresolved overloaded function type>)'
test.cpp:9:27: note: candidate is:
test.cpp:5:6: note: template<class ... A> void bar(A ...)
test.cpp:5:6: note: template argument deduction/substitution failed:

为什么会出现这些错误?

最佳答案

看起来它可能是一个 bug in GCC that is possibly fixed in GCC 4.6.2 (我说可能是因为它并不完全相同,但确实涉及获取可变参数模板函数的地址)。

关于c++ - 将函数模板特化传递给可变参数模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7394260/

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