14得票1回答
字面类型中可以包含 Void 类型吗?

在 C++14 中,void 是字面类型。 如果一个类型满足以下条件,则它是字面类型: — void;或者 — 一个标量类型;或者 — 一个引用类型;或者 — 字面类型的数组;或者 — 一个类类型(第9条)同时满足以下所有属性:— 它有...

7得票1回答
C++11/C++14中的自动和大括号初始化

当我使用clang和gcc编译以下代码时,T的推断结果不同。 #include<initializer_list> //for clang //to see how T is deduced(form compiler error). template<typename ...

8得票1回答
在向量中正确分配内存

我正在尝试作为一项编程练习实现 std::vector。 考虑以下代码片段: template <class T, class Allocator = std::allocator<T>> class vector { public: using size_...

13得票1回答
constexpr默认的默认构造函数

如果我想将我的default构造函数声明为constexpr,则Clang 3.8和GCC 5.3会出现编译器错误。根据这个stackoverflow问题,它应该能够正常工作:struct A { constexpr A() = default; int x; }; 然而:E...

8得票1回答
将一个可变lambda表达式通过unique_ptr传递给const&std :: function

我有一个调度函数,可以在主线程中执行给定的lambda。就这个问题而言,假设它如下所示: void dispatch(const std::function<void()>& fn) { fn(); } 我需要在不干扰主线程的情况下在新线程中加载一个新对象。所...

22得票3回答
匹配可变的非类型模板参数

假设我有两个结构体,Foo 和 Bar: template<int...> struct Foo{}; template<unsigned long...> struct Bar{}; 我希望创建一个类型特征(称其为match_class),如果我传递两个Foo...

53得票3回答
错误:过时的旧式基类初始化程序

以下代码在我尝试的所有GCC版本中,无论是C++98、C++11还是C++14模式,都会产生下面的编译错误: struct T { T(void* x) : (x) {} }; // main.cpp: In constructor 'T::T(void*)': // main.c...

7得票1回答
如何从数组构建元组。

我正在设计一个C++库,用于读取一份实验报告的CSV文件,并完成一些聚合操作和输出pgfplots代码的工作。我希望使该库尽可能通用且易于使用。我也希望将其与CSV文件中所表示的数据类型隔离开来,并留给用户解析每列数据的选项。我还希望避免使用Boost Spirit Qi或其他重量级解析器。 ...

14得票2回答
实现是否允许向标准类型添加公共成员?

C++标准库实现是否允许在标准类型接口中添加公共(和保护的)成员?N3797 17.6.5.5 [member.functions]/2 表示:一个实现可以在类中声明附加的非虚拟成员函数签名: - 通过向成员函数签名添加默认值来添加参数;[注意:实现不能向虚拟、全局或非成员函数添加带有默认值...

12得票1回答
断言(assert)可用于常量表达式吗?

来自<cassert>的 assert宏提供了一种简洁的方式来确保条件得到满足。如果参数求值结果为true,则不应再有任何进一步的影响。然而,在这种情况下,它的调用是否也可以在常量表达式中使用?