类成员函数的返回值类型
Return value type for class member function
我有几个A
,比如带有方法的类,比如get_value()
,它返回不同类型的值。还有一个类B
,它返回一个带有方法 value()
的值。例如:
struct A_like1 {
int get_value() const { return 10; }
};
struct A_like2 {
char get_value() const { return 'a'; }
};
struct B
{
float value() const { return 2.5; }
};
现在,我需要一个函数来检索这些类的值。我有一个功能:
template<typename T>
auto get_value(const T & t) -> result_of<decltype(&T::get_value)(T)>::type
{
return t.get_value();
}
它给了我许多VS2010上的编译错误,首先是:
Error 1 error C2061: syntax error : identifier 'type' c:_dataworkvmxic++voxvoxtemplate_specialization.h 51
对于B
我有一个过载,这工作正常。问题是,如何使get_value()
与result_of<>()
一起工作?
附言嗯,我刚刚意识到我可以用-> decltype(T().get_value())
代替,这工作正常。但是为什么result_of<>()
不起作用呢?此外,我能够在.cpp
文件中声明一个变量:
result_of<decltype(&A_like1::get_value)(A_like1)>::type i=0;
关键字 typename
可用于声明依赖名称(如 std::result_of<T>::type
(是一个类型。否则,我相信假定std::result_of<T>::type
是数据成员。在 C++14 中,几个类型特征获得了包含 typename
关键字的using
别名。这些别名始终与特征具有相同的名称,并带有_t
后缀。
尝试:
typename result_of<decltype(&T::get_value)(T)>::type
或者,使用 C++14 :
result_of_t<decltype(&T::get_value)(T)>
相关文章:
- 如何使用 uint64_t 键类型从 std::map<int, std::string> 返回值?
- 对于具有引用返回类型的搜索算法,默认返回值应该是什么?
- 函数的返回值类型是别名 ***或 *** 布尔值
- 如何为具有常量类型的函数正确转换来自 DLsym 的返回值?
- Pybind11:作为返回值的外部类型
- 从类型bankAccount的返回值到函数返回类型int没有可行的转换
- 更改 Python 切换的 C 函数的返回值类型
- C 语法,根据此代码返回值类型
- 类成员函数的返回值类型
- 如何捕获返回 lambda 的函数的返回值类型
- 如何从std :: function推断返回值类型
- 分配操作员返回值类型
- 使用延迟加载加载正确的库 - 返回值类型错误
- 返回指向常量getter的指针时,返回值类型与函数类型不匹配
- 返回值类型与函数类型CONST不匹配
- 提升phoenix值和函数返回值类型
- C++ 返回值类型与函数类型不匹配
- const成员函数的优先级高于返回值类型匹配
- boost::resulf_of或返回值类型为boost_TYPEOF
- 将函数的返回值类型转换为大小相同的不相关类型