我有一个函数,我需要测试是否可以将给定类型的参数传递给它。例如:
template<typename T, auto F>
decltype(F(declval<T>{})) foo();
调用foo<int, bar>()
有两件事:
- 设置的返回类型
foo
将具有相同的返回类型bar
- 确保这
bar
是一个接受类型参数的函数T
不幸的是,我无法访问auto
模板类型,但我仍然想完成这两个。我需要的是一个decltype
函数指针,它可以让我做这样的事情:
template <typename T, typename F>
decltype(declval<F>(declval<T>{})) foo();
所以我仍然可以打电话foo<int, bar>()
并得到相同的结果。当然没有declval
for 函数指针。但是还有另一种方法可以做到这一点吗?