c++11相关内容
我用 C++0x 玩了一段时间,现在我想使用可变参数模板和元组来实现类“任务".我将把 Task 对象传递给新创建的线程(使用 pthread).任务类将包含指向函数的函数指针,该函数应在线程内调用和该函数的参数,简化代码: 类TaskCaller{//...虚拟布尔调度(无效);};模板任务 :公共任务调用者{上市://...任务 (bool
..
我已经编写了以下基本元组模板: 模板类元组;模板结构元组索引器;模板元组类: public Tuple{私人的:头部元素;上市:模板typename TupleIndexer::Type&得到() {return
..
考虑以下功能: templateinline unsigned int myFunction(const List&... list){返回/* 一些东西 */;} 为了返回 sizeof 所有参数的总和,最简单的方法是什么而不是 /* SOMETHING */ ? 例如 myFunction(int, char, double) = 4+1+8 = 13 解决方案 unsign
..
我有一个 typedef std::tuple元组类型; 并且想使用类列表对于“模板". 假设我有: templatestd::tuple解析(std::istream &stream){返回 std::make_tuple(args(stream)...);} 并且我可以成功地使用它: auto my_tuple = parse(ifs); 如果我已经有一个,
..
目前我有两个功能: templatebool f(类型* x);模板bool f(std::tuple* x); 有什么方法可以将这两个函数与一个额外的模板参数合并,该参数指示传递的类型是否为元组? template 解决方案 当然,使用 is_specialization_of(链接取自 这里): template::value>bool f(类
..
在 C++0x 中,可以创建一个 constexpr std::tuple,例如喜欢 #include constexpr int i = 10;constexpr 浮点 f = 2.4f;constexpr 双倍 d = -10.4;constexpr std::tupletup(i, f, d); 也可以在运行时查询 std::tupl
..
对我来说,pair 只是 tuple 的特例,但以下让我感到惊讶: pairp1(1, 2);//行元组t1(1, 2);//行对p2={1, 2};//行元组t2={1, 2};//编译错误 为什么我们用{}来初始化tuple会有区别? 我什至尝试了 g++ -std=c++1y 但仍然有错误: a.cc: 在函数'int mai
..
我正在尝试使用 Visual C++ 11 构建 googletest,但以下代码会导致错误 template void PrintTo(const ::std::tr1::tuple& t,// 这是一个错误文本: f:\gtest-1.6.0\include\gtest\gtest-printers.h(550): 错误 C2977: 'std::tuple' : 模板参数太多c:\pr
..
在这个例子中,是否可以允许对tuple的模板参数类型进行推导? #include#include模板void fun(std::tuple t, std::string other){}诠释主要(){fun(std::tuple(2.,3), std::string("other"));//行fun(std::mak
..
假设我有一个自定义类型(我可以扩展): struct Foo {诠释一个;字符串 b;}; 如何使该对象的实例可分配给 std::tie,即 std::tuple 引用? Foo foo = ...;诠释一个;字符串 b;std::tie(a, b) = foo; 尝试失败: 重载 tuple 是不可能的,因为赋值运算符是二进制运算符之一,它必须是左侧对象的成员. 所以我尝试通
..
对于元组的伪成员的布局和内存对齐是否有任何正式的规范? 有没有办法修改元组中类型的内存对齐方式?是否受#pragma pack() 指令影响? 例如: typedef std::tuple;我的元组; 是否有任何规范说明这将在内存中与以下内容相同: #pragma pack()//默认打包结构我的结构{uint8_t 优先;uint32_t 秒;} 抱歉,如果这是一个愚蠢的问题
..
我一直在尝试将 std::tuple 与引用结合起来: #include #include int main() {整数a,b;std::tuple测试(a,b);std::get(测试) = 1;std::get(测试) = 2;std::cout
..
如何将 std::vector 转换为 std::tuple ?我有 类 T { };int cnt = 3;向量 电视;for (int i = 0; i
..
我有一个未知大小的元组(它是方法的模板参数) 有没有办法得到它的一部分(我需要扔掉它的第一个元素) 例如,我有 tuple(7,12,42).我想要 tuple(12,42) 这里 解决方案 借助编译时整数列表: #include 模板 结构 ct_integers_list {模板 结构 pus
..
我有一段类似如下的 c++11 代码: switch(var) {案例 1:dsomething(std::get(tuple));案例 2:dsomething(std::get(tuple));...} 有什么办法可以去掉这个大开关吗?请注意,get 不起作用,因为 var 不是常量,但我知道 var 的范围很小,即 (0-20). 注意这里的重点是避免使用导致
..
如果构造函数的执行顺序很重要,我该如何使用 std::make_tuple? 比如我猜A类的构造函数和B类的构造函数的执行顺序是未定义的: std::tuplet(std::make_tuple(A(std::cin), B(std::cin))); 我在阅读了对该问题的评论后得出了这个结论 将 std::tuple 转换为模板参数包 这就是说这个 templa
..
我做了以下元组: 我想知道我应该如何迭代它?有 tupl_size(),但是阅读文档后,我不知道如何使用它.我也有搜索所以,但问题似乎是围绕 Boost::tuple . auto some = make_tuple("我很好", 255, 2.1); 解决方案 这里尝试将元组的迭代分解为组件部分. 首先是一个函数,表示按顺序执行一系列操作.请注意,尽管据我所知它是合法的 C++
..
我注意到在漂亮打印元组的上下文中提到了“索引技巧".听起来很有趣,所以我关注了 链接. 好吧,那并不顺利.我理解这个问题,但真的无法理解发生了什么.为什么我们甚至需要任何东西的索引?那里定义的不同功能对我们有何帮助?什么是“裸"?等等 有人可以为参数包和可变元组方面的专家详细介绍该内容吗? 解决方案 问题是:我们有一个 std::tuple 并且我们有一些函数f 我们可以在每个
..
这是我之前关于漂亮打印STL容器,为此我们设法开发了一个非常优雅且完全通用的解决方案. 在下一步中,我想为 std::tuple 包括使用可变参数模板的漂亮打印(所以这严格来说是 C++11).对于std::pair,我简单说 std::ostream &运算符 & p){返回 o
..
为什么std::unordered_map, string> 只是开箱即用?必须为 tuple 定义散列函数很繁琐,例如 模板struct do_hash>{ size_t operator()(std::tuple const& tt) const {...} }; 构建以元组为键的无序映射 (Matth
..