我得到了一个官方的回答这个问题,这decltype应该不会触发函数编写.事实上,decltype在声明但未定义的函数上是合法的.
接下来的问题,应该取一个函数的地址触发一个函数的编译?就拿这个例子:
template <typename T>
void foo(T&& x) { x.func(); }
int main()
{
auto bar = &foo<int>;
}
Run Code Online (Sandbox Code Playgroud)
我测试的所有编译器都失败了,例如:
请求部件
func中x,其是非类类型的int
但是,如果我只是定义foo并且不声明它,那么代码编译得很好.有人可以向我提供官方消息来源,了解是否需要获取函数的地址需要编译吗?
我最近得知我不能:
但我最近也了解到我可以 调用decltype以获取所述函数的返回类型
所以一个未定义的函数:
int foo(char, short);
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以将参数类型与a中的类型相匹配tuple.这显然是一个元编程问题.我真正拍摄的是decltypeargs这个例子中的东西:
enable_if_t<is_same_v<tuple<char, short>, decltypeargs<foo>>, int> bar;
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我了解如何decltypeargs制作?