10得票3回答
这是直接初始化还是拷贝初始化?

在 C++ 中,可以以多种方式初始化对象(类或结构的实例)。某些语法引发了您对象的 直接初始化,而其他语法则导致了 复制初始化。启用编译器中的 复制省略 后,两者具有相同的性能。如果禁用 复制省略,那么当您选择后者(复制初始化)时,在每次实例化时会有额外的复制/移动构造函数调用。 结论:复制...

13得票1回答
是否有C++11/14的替代方案来代替__attribute__((packed))?

C++11引入了标准化的属性语法的概念。我找不到所有支持的属性列表。是否有C++11属性可以替代__attribute__((packed))?例如: struct __attribute__((packed)) Pack { uint8_t field1; uint8_t fi...

9得票1回答
C++14松散constexpr限制的理解困难

我最近发现了新的C++14std::max函数签名: template< class T > const T& max( const T& a, const T& b ); // (C++11) template< class T > c...

9得票2回答
std::array的嵌套聚合初始化

我想知道为什么以下代码中声明 std_arr 会出错,而 c_arr 可以编译通过: struct S { int a, b; }; S c_arr[] = {{1, 2}, {3, 4}}; // OK std::array<S, 2> std_arr = {{1, 2},...

7得票1回答
clang和gcc中的constexpr复合赋值运算符

I have the following code: main.cpp #include <cstdint> #include <type_traits> enum class FooEnum : uint8_t{ Foo1 = 0, Foo2 ...

32得票3回答
__builtin_ctz(0)或__builtin_clz(0)的未定义程度有多严重?

背景 长期以来,gcc一直提供了许多内置的位操作函数,特别是用于计算前导和末尾0位数的函数(同样适用于带有后缀l和ll的long unsigned和long long unsigned): — 内置函数:int __builtin_clz (unsigned int x) 返回在最高有...

21得票1回答
避免返回 const 局部变量?

我一直认为将局部常量定义为const是很好的做法void f() { const resource_ptr p = get(); // ... } 然而,上周我观察到一些学生在完成C++练习时想知道一个const指针被返回的含义。resource_ptr f() { c...

8得票2回答
在一个constexpr函数中返回一个C字符串:为什么编译器没有警告?

请考虑以下代码: constexpr auto f() { auto str = "Hello World!"; return str; } int main(int argc, char* argv[]) { static constexpr auto str =...

7得票2回答
如何实现一个支持模板协变的通用工厂?

如何在C++14中实现一个支持模板协变的通用工厂? 我想要实现类似于这样的功能: std::shared_ptr<Factory<BaseClass>> factory = std::make_shared<Factory<DerivedCla...

8得票3回答
C++14标准中在哪里说明非constexpr函数不能用于constexpr函数的定义?

例如,以下代码除非将 incr() 声明为 constexpr,否则无法编译: int incr(int& n) { return ++n; } constexpr int foo() { int n = 0; incr(n); return n; ...