相关疑难解决方法(0)

应该采用模板化函数的地址触发其编译?

我得到了一个官方的回答这个问题,decltype应该不会触发函数编写.事实上,decltype在声明但未定义的函数上是合法的.

接下来的问题,应该取一个函数的地址触发一个函数的编译?就拿这个例子:

template <typename T>
void foo(T&& x) { x.func(); }

int main()
{
    auto bar = &foo<int>;
}
Run Code Online (Sandbox Code Playgroud)

我测试的所有编译器都失败了,例如:

请求部件funcx,其是非类类型的int

但是,如果我只是定义foo并且不声明它,那么代码编译得很好.有人可以向我提供官方消息来源,了解是否需要获取函数的地址需要编译吗?

c++ templates compilation function-pointers addressof

7
推荐指数
1
解决办法
208
查看次数

确定未定义函数的参数类型

我最近得知我不能:

  1. 获取未定义函数的地址
  2. 使用一个无法编译的类型的模板化函数的地址

但我最近也了解到我可以 调用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制作?

c++ metaprogramming addressof decltype function-parameter

7
推荐指数
1
解决办法
151
查看次数