c++11 - std::function 上的 typedef 以缩短它
问题描述
我想在我自己的命名空间中缩短std::function<bool(int)>
输入func<bool(int)>
。这只是个人喜好。
我在下面尝试了以下代码,但遇到语法错误。
//MyHeader.hpp
template<typename S> struct func; //signature
template<typename R, typename ...Args>
struct func<R(Args...)>;
template<typename R, typename ...Args>
//typename typedef std::function<R(Args...)> func; // <R(Args...)>;
using func = std::function<R(Args...)>; //<---closes to solve.
//SomeClass.cpp
func<bool(int)> f;
func<void()> g = [] {
//some code here...
}
我怎样才能做到这一点?
解决方案
您的解决方案有点太复杂了,您可能希望像这样使用别名模板
#include <functional>
template <class Fct> using func = std::function<Fct>;
您可以以所需的方式实例化:
int test(bool) { return 1; }
func<int(bool)> f(test);
funct<void()> g = [](){};
推荐阅读
- android - Android TV 警报对话框;新设计
- c++ - 使用 TPM 如何使用 SRK 密钥进行密封
- reactjs - 如何在反应表格单元格中提供右键单击另存为pdf选项
- c# - 从反射中获取方法并将它们分配给委托
- charts - LabVIEW中的多个绘图到同一个图表
- r - 用 R ggplot 绘制数百个图
- c# - System.ArgumentException:“encryptedTicket”参数的无效值发生在第一次成功登录后的任何登录上
- .net - Web 应用程序转换后将构建操作更改为“页面”而不是“内容”
- variables - WinBUGS 中未初始化的变量和#Bugs:dic.set 无法执行(灰显)问题
- php - Symfony 控制器功能测试中的 $this->getUser() 返回 null