gpt4 book ai didi

c++ - c++模板函数地址

转载 作者:IT老高 更新时间:2023-10-28 21:53:15 25 4
gpt4 key购买 nike

为什么编译失败? (g++-4.5)

template < typename U >
static void h () {
}

int main () {
auto p = &h<int>; // error: p has incomplete type
}

编辑:这是一种解决方法:

template < typename U >
static void h () {
}

int main () {
typedef decltype (&h<int>) D;
D p = &h<int>; // works
}

最佳答案

在 C++0x 中,这保证可以工作。但是在 C++03 中这不起作用(即初始化部分),并且一些编译器显然还不支持它。

此外,我记得 C++0x 的措辞不清楚 &h<int> 会发生什么。当它是函数模板的参数并推导出相应的参数时(这就是 auto 概念上的翻译)。然而,意图是它是有效的。见 this defect report他们设计了措辞,“Nico Josuttis”的例子和他们的最后一个例子。

还有另一个规则,该措辞强制执行,但编译器没有正确执行。例如,see this clang PR .

关于c++ - c++模板函数地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3641657/

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