在C++引物中对函数指针类型使用auto或decltype
Using auto or decltype for Function Pointer Types in C++ primer
C++入门,6.7指向函数的指针对函数指针类型使用auto或decltype
如果我们知道要返回哪个函数,我们可以使用decltype来简化编写函数指针返回类型。例如,假设我们有两个函数,它们都返回一个字符串::size_type,并且有两个常量字符串&参数。我们可以编写第三个函数,它接受一个字符串参数,并返回一个指向这两个函数之一的指针,如下所示:
string::size_type sumLength(const string&, const string&);
string::size_type largerLength(const string&, const string&);
// depending on the value of its string parameter,
// getFcn returns a pointer to sumLength or to largerLength
decltype(sumLength) *getFcn(const string &);
我不明白"getFcn
根据其字符串参数的值返回指向sumLength
或largerLength
的指针";。如何知道指针函数返回指向sumLength
或largerLength
的点?
这篇文章说你可以将getFcn定义为这样的
typedef decltype(sumLength) func_type;
func_type* getFcn(const string& s)
{
if (s.size() < 1000) // magic number
return sumLength;
else
return largerLength;
}
你可以称之为
string str1, str2;
// calls either sumLength or largerLength with str1, str2
// depending on str1's size
auto i = getFcn(str1)(str1, str2);
相关文章:
- 推理类型如何工作"auto"和按引用调用?
- 将函数参数类型声明为 auto
- 使用constexpr + auto作为返回和参数类型的奇怪类型推导
- 使用"auto"推断嵌套初始值设定项列表的类型
- "auto"推断出 hashtable_policy.h 中的错误类型
- 为什么"const auto [x, y]"绑定到引用类型时没有按预期运行?
- 对'auto'扣除类型的困惑
- 如果使用返回引用的函数初始化"auto"var,为什么它不声明引用类型?
- decltype(auto) 是否使尾随返回类型过时?
- 用 decltype 和 auto 推导出 const(返回)类型
- 警告:函数使用不带尾随返回类型的'auto'类型说明符
- 在 Objective-C++ 中应用于__weak指针时,通过关键字推导类型"auto"规则是什么?
- decltype(auto) 类型演绎:返回 x 与返回 (x)
- C++:在原型中声明"auto"函数返回类型仍然会导致在扣除错误之前使用"auto&quo
- 我可以在动态知道其类型的模板类对象中使用 auto 关键字吗?我不能在没有初始值设定项的情况下使用 auto 关键字吗?
- C++14 'auto'能够获取函数返回类型,我们还需要 std::result_of<> 吗?
- 声明适用于 auto,但不能显式声明类型?
- 如何在编译时决定'auto'返回类型?
- 为什么在auto和template函数的情况下,类型都没有推导为"const"类型
- 调用的对象类型'auto'不是函数或函数指针