小编Sun*_*ang的帖子

如何使用 type_traits 仅在特定类型上添加模板类的成员函数 | C++

template <typename T>
class A
{
        template <std::enable_if_t<std::is_signed_v<T>, bool> = true>
        constexpr value_type determinant()
        {
            
        }
}
Run Code Online (Sandbox Code Playgroud)

我想仅当类型为有符号类型时才实例化行列式函数T,因此我尝试此代码,但当类型T为无符号编译器时仍尝试实例化行列式函数。

我不想专门针对每个签名类型的模板函数T
我想使用std::is_signed_v类型特征来简化代码

c++ sfinae c++17

4
推荐指数
1
解决办法
1006
查看次数

为什么 std::function 太慢 CPU 无法利用指令重新排序?

当我开发我的项目时,我发现 std::function 非常慢。
所以我试图知道为什么它真的很慢。
但我找不到明显的原因。

我认为What Cpu不能利用指令重排序优化和CPU管道,因为它不知道调用哪个函数是性能差的原因。
它使内存停滞并降低性能......

我对吗???

c++ c++11

2
推荐指数
1
解决办法
1926
查看次数

这三种函数返回方式之间是否存在性能差异(c++)

A Function1()
{
    return {1};
}

A Function2()
{
    return A{1};
}

A Function3()
{
    A a{1};
    return a;
}
Run Code Online (Sandbox Code Playgroud)

我尝试了三种方法。它们都只调用一个赋值构造函数。

我的问题取决于使用哪个编译器,性能可能会有所不同?

c++

1
推荐指数
1
解决办法
63
查看次数

我可以在没有默认初始化的情况下初始化数组的 std::unique_ptr 吗(我只想让它有虚拟值)

我可以在没有默认初始化的情况下初始化数组的 std::unique_ptr (我只想让它有虚拟值)
我正在尝试使用数组的 unique_ptr 来防止内存泄漏。
但它看起来总是用 0 初始化值(看“movups XMMWORD PTR [rax+48], xmm0”)我不需要这个。我只希望 vector2 具有虚拟值。
我可以这样做吗??

#include <memory>

struct Vector2
{
    float x, y;
};

struct A
{
    std::unique_ptr<Vector2[]> vector2;
};

int main()
{
    A a;
    a.vector2 = std::make_unique<Vector2[]>(10);
}


    sub     rsp, 40                             ; 00000028H
    mov     QWORD PTR a$[rsp], 0
    mov     ecx, 80                             ; 00000050H
    call    void * operator new[](unsigned __int64)               ; operator new[]
    test    rax, rax
    je      SHORT $LN15@main
    xorps   xmm0, xmm0
    movups  XMMWORD PTR [rax], xmm0
    movups  XMMWORD …
Run Code Online (Sandbox Code Playgroud)

c++ initialization unique-ptr c++14 c++17

1
推荐指数
1
解决办法
56
查看次数

标签 统计

c++ ×4

c++17 ×2

c++11 ×1

c++14 ×1

initialization ×1

sfinae ×1

unique-ptr ×1