我得到了这个不应触发函数编译的问题的官方答案。事实上,声明但未定义的函数是合法的。decltype
decltype
下一个问题,获取函数的地址是否应该触发函数的编译?举个例子:
template <typename T>
void foo(T&& x) { x.func(); }
int main()
{
auto bar = &foo<int>;
}
我测试过的所有编译器都失败,并出现如下错误:
对非类类型的成员
func
的请求x
int
但是如果我只是定义foo
而不声明它,代码编译得很好。有人可以向我提供有关获取函数地址是否需要编译的官方资料吗?