std::result_of语法混乱
std::result_of syntax kerfuffle
我有以下(CUDA(函数:
__device__ auto foo(my_class& x, my_function_ptr_type y ) {
return [gen](my_class& x) { return x.set_y(y); };
}
我想要 typedef 它的返回值的类型。我一直在摆弄 std::result_of 语法,但不能完全正确。这不起作用:
using foo_return_type = std::result_of<decltype(foo(my_class{}, my_function_ptr_type{nullptr}))>::type;
也不是这个:
using foo_return_type = std::result_of<decltype(foo(my_class, my_function_ptr_type))>::type;
也不是这个:
using foo_return_type = std::result_of<foo>::type;
我应该有什么作为模板参数来std::result_of
?
笔记:
- 命名空间中只有一个
foo()
。 - 不涉及任何模板(除了
std::result_of
... - C++11 或 C++14,随你选择(但请注意,这是 CUDA,所以理论上这可能是一个问题(。
- 编译器:NVCC 10.1
您需要一个函数指针类型和参数类型,然后以F(ArgTypes...)
的格式组合它们。
using foo_return_type = std::result_of<decltype(&foo)(my_class&, my_function_ptr_type)>::type;
住
你也可以做自己的类型特征,如果你不坚持std::result_of
,例如
template <typename F>
struct return_type_of_function {};
template <typename R, typename... Args>
struct return_type_of_function<R(Args...)> {
using type = R;
};
然后
using foo_return_type = return_type_of_function<decltype(foo)>::type;
住
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 助记符和指向成员语法的指针
- 有人能分解一下这个c++模板的语法吗
- C++避免重复声明的语法是什么
- QMetaObject invokeMethod的基于函数指针的语法
- 如何克服提升精神AST混乱
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 单独定义模板化嵌套类方法的正确语法
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 使用基类指针调用基类的值构造函数的语法是什么?
- 很好的语法来获取对向量/数组数据的大小引用?
- C++语法运算符功能?
- C++使用 rand 定义函数语法
- std::result_of语法混乱
- deque的语法混乱.这个语法是什么意思
- 类函数语法混乱