问题列表 - 第318101页

类型上不存在属性“?unwrapWritableSignal”

\n

类型“typeof import("/home/thrymr/Desktop/ILMCT 2/ilmct-frontend/node_modules/@angular/core/index")”上不存在属性“\xc9\xb5unwrapWritableSignal”。

\n
\n

项目已成功编译并运行,但无论我在[(ngModel)]. 原因是什么以及如何消除此错误?

\n

我尝试了一切,比如卸载我的 vs code 并再次安装,再次克隆项目。使用 Angular 版本为 14,Node.js 版本为 18

\n
\n

版主注:这似乎是最新版本的 Angular Language IDE 扩展中的一个错误。请不要添加仅指向该错误或告诉人们降级的新答案。

\n
\n

angular angular-language-service

62
推荐指数
4
解决办法
2万
查看次数

为什么conn read方法中有读锁?

在golang net包https://github.com/golang/go/blob/master/src/internal/poll/fd_unix.go#L140中 有一个读锁。有人能解释一下这把锁的用途吗?据推测,客户端和服务器之间的每个连接都是唯一的,因此不应期望来自不同线程的多次读取尝试?我还假设每个连接都有一个 go 例程处理程序。

 func (fd *netFD) Read(p []byte) (n int, err error) {
    if err := fd.readLock(); err != nil {
        return 0, err
    }
    defer fd.readUnlock()
Run Code Online (Sandbox Code Playgroud)

无锁提高效率

go

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

std::bit_cast 填充和未定义的行为

我想知道如何std::bit_cast以明确定义的方式使用,特别是在存在不确定位的情况下。什么时候是std::bit_cast使用定义的行为,什么时候是未定义的行为?

因此,我需要澄清cppreference 关于 std::bit_cast的措辞。我不明白下面这段话的意思:

对于不确定结果的值表示中的每一位,包含该位的最小对象具有不确定值;除非该对象是 unsigned char 或 std::byte 类型,否则行为未定义。结果不包含任何不确定的值。

当输入 ( ) 包含不确定位(明显是填充位)时,所提到的对象是什么以及它们的类型(与其他类型)From的区别是什么?std::byte

让我们写一个例子(不是实际的用例,只是说明具有不确定位的情况):

#include <bit>
#include <cstdint>
struct S40 {
    std::uint8_t a = 0x51;
    std::uint32_t b = 0xa353c0f1;
};
struct S3 {
    std::uint8_t a : 3;
};

int main() {
    S40 s40;
    std::uint64_t a64 = std::bit_cast<std::uint64_t>(s40);
    // (3) on tested compilers, a64 is 0xa353c0f1UUUUUU51 where U is undefined byte
    S3 s3;
    s3.a = 0b101;
    std::uint8_t a8 = std::bit_cast<std::uint8_t>(s3);
    // (4) …
Run Code Online (Sandbox Code Playgroud)

c++ undefined-behavior language-lawyer c++20 bit-cast

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

这个算法的时间复杂度怎么可能是 O(N) 呢?

我得到这段代码的来源声称它的时间复杂度是 O(N),但这怎么可能呢?在我看来,时间复杂度应该是 O(N 2 )。

int j = 0;
for (int i = 0; i < N; i++) {
    while ((j < N - 1) && (A[i] - A[j] > D))
        j++;
    if (A[i] - A[j] == D) return 1;
}
Run Code Online (Sandbox Code Playgroud)

内部 while 循环将被调用Ntimes,j最多递增2N次,因此总共最多递增N2次。因此,时间复杂度应该是O( N2 )。N这个算法怎么可能 O( ) 也可以呢?

c big-o time-complexity

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

从 C 中的函数返回二维数组

我将一个矩阵输入到一个函数中,我想输出它本身的乘法。我无法设法以正确的格式返回结果。

int **multiplyMatrix(int matrixA[10][10], int matrixB[10][10], int n)
{
    int matrixC[10][10] = { 0 };
    int rowC, columnC = 0;
    int i = 0;
    int* ptr = matrixC;
    for (rowC = 0; rowC < n; rowC++)
    {
        for (columnC = 0; columnC < n; columnC++)
        {
            i = 0;
            for (i = 0; i < n; i++)
            {
                matrixC[rowC][columnC] += matrixA[rowC][i] * matrixB[i][columnC];
            }
        }
    }
    return *ptr;
}
Run Code Online (Sandbox Code Playgroud)

乘法工作正常,如果我在函数中打印矩阵,我会得到正确的结果,但我无法将值返回到 main()

void main()
{
    int n=2;
    int matrixA[10][10] = { …
Run Code Online (Sandbox Code Playgroud)

c types pointers matrix-multiplication

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

std::chrono::round 对超出范围的值的行为是否符合预期?

我目前正在将 a 舍入std::chrono::duration<float>std::chrono::duration<uint32_t>,当我给它超出范围的值时,它会舍入为 ,1s而不是4294967295s

看看标准,它说

template <class ToDuration, class Rep, class Period>   
constexpr ToDuration round(const duration<Rep, Period>& d);
Run Code Online (Sandbox Code Playgroud)

[...]
返回:其中可表示的值 tToDuration最接近d。[...]

这是我的确切代码:

#include <chrono>
#include <cstdio>
#include <limits>
#include <cstdint>

int main()
{
        std::chrono::duration<float> seconds{std::numeric_limits<float>::max()};
        printf("float:    %f\n", seconds.count());
        printf("uint32_t: %u\n", std::chrono::round<std::chrono::duration<uint32_t>>(seconds).count());
        printf(" int32_t: %d\n", std::chrono::round<std::chrono::duration<int32_t>>(seconds).count());
        printf("uint64_t: %lu\n", std::chrono::round<std::chrono::duration<uint64_t>>(seconds).count());
        printf(" int64_t: %ld\n", std::chrono::round<std::chrono::duration<int64_t>>(seconds).count());
}
Run Code Online (Sandbox Code Playgroud)

哪个输出

float:    340282346638528859811704183484516925440.000000
uint32_t: 1
 int32_t: -2147483647
uint64_t: 9223372036854775809
 int64_t: -9223372036854775807
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,其他整数类型的行为也很奇怪。与等人不同的是std::lround, …

c++ rounding undefined-behavior c++-chrono c++17

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

通过 IR 进行解释而不将所有内容都表示为枚举?

我正在尝试编写一个简单的 IR 解释器。我知道如何使用 IR 和返回类型的枚举来执行此操作,但有几个原因我不想这样做:

  • 我有几个部分重叠的 AST,并且希望避免每个 AST 的冗余代码。(例如,Data 和 IR 共享许多非常相似的节点,如果能够输入 IR 以便某些节点仅在特定上下文中有效,那就太好了)
  • 我希望能够进行更强大的类型推断 和impl,当 an 中的所有内容都enum属于同一类型时,这会受到限制
  • 我正在探索多种选择,并希望确保我已经涵盖了我的基础

因此,我非常希望摆脱由特征表示的 IR 和返回数据,例如:

trait Data{}
trait IR{
    fn evaluate(self) -> Box<dyn Data>;
}
Run Code Online (Sandbox Code Playgroud)

但我在尝试进行评估时遇到了障碍:

struct Bool(bool);
impl Data for Bool{}
//other things impl Data, of course

struct IfThenElse<T1, T2, T3>{
    condition: T1,
    then_branch: T2,
    else_branch: T3
}
impl<T1, T2, T3> IR for IfThenElse<T1, T2, T3> where T1: IR, T2: IR, T3: IR{
    fn evaluate(self) -> Box<dyn Data>{ …
Run Code Online (Sandbox Code Playgroud)

rust

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

类模板可以从其自身的完全特化中继承吗?

我有一个数据类型,其中包含一些信息,并且可能会也可能不会存储额外的数据。我们称之为碎片。我定义了一个具有一些常见功能的基类:

class ShardBase {
public:
  virtual void Frobnicate() = 0;
};
Run Code Online (Sandbox Code Playgroud)

我想定义一个模板化的子类,允许访问额外的数据:

template <typename T=void>
class Shard : public ShardBase {
public:
  virtual const T& value() const = 0;
};
Run Code Online (Sandbox Code Playgroud)

我想处理没有额外数据的情况,所以我可以将 Shard 专门用于void

template <>
class Shard<void> : public ShardBase {};
Run Code Online (Sandbox Code Playgroud)

现在Shard<int>有了一个value()方法并且Shard<>只有基本功能。

我想做的继承Shard<T>Shard<void>,以便在任何不需要特定类型信息的地方,我都可以将const Shard<>&. 我知道在这种情况下我可以只使用 a const ShardBase&,但我想Shard<>与其他地方的 API 保持对称。

如果我做这样的事情:

template <typename T>
class Shard : public Shard<void> { …
Run Code Online (Sandbox Code Playgroud)

c++

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

为什么 sin 在 WebAssembly 中比在 Java 脚本中慢?

我有一些非常简单的基准测试,通过 Catch2 运行,并使用 -O3 进行编译emscripten 3.1.37

    BENCHMARK("cpp sin only")
    {
        double sum = 1.0;
        for (int t = 0; t < 2000000; ++t) {
            sum += sin(double(t));
        }
        return sum;
    };

#ifdef __EMSCRIPTEN__
    BENCHMARK("js sin only")
    {
        EM_ASM_DOUBLE({
            let sum = 1;
            for (let i = 0; i < 2000000; i++) {
                sum = sum + Math.sin(i);
            }
            return sum;
        });
    };
#endif
Run Code Online (Sandbox Code Playgroud)

我预计 JavaScript 和 WebAssembly 之间不会有太大差异,但有:

chrome:
benchmark name                       samples       iterations    est run time
                                     mean          low …
Run Code Online (Sandbox Code Playgroud)

webassembly

6
推荐指数
0
解决办法
86
查看次数

使用 Clang 编译时链接器抱怨未定义的引用

我遇到了一个非常奇怪的 clang 问题。

当我使用 gcc-11 使用 C++20 编译代码时,一切都很好。

当我尝试使用 C++20 和 clang-14 编译它时出现问题(使用 clang-15/16/17 没有帮助)。

链接器抱怨对容器的所有类模板实例化的未定义引用,下面是错误消息之一:

/opt/compiler-explorer/gcc-11.2.0/lib/gcc/x86_64-linux-gnu/11.2.0/../../../../x86_64-linux-gnu/bin/ld: /tmp/example-ded8d6.o:(.rodata._ZTV6WidgetINSt7__cxx114listIlSaIlEEEE[_ZTV6WidgetINSt7__cxx114listIlSaIlEEEE]+0x10): undefined reference to `Widget<std::__cxx11::list<long, std::allocator<long> > >::doSth()'
/opt/compiler-explorer/gcc-11.2.0/lib/gcc/x86_64-linux-gnu/11.2.0/../../../../x86_64-linux-gnu/bin/ld: /tmp/example-ded8d6.o:(.rodata._ZTV6WidgetISt6vectorIbSaIbEEE[_ZTV6WidgetISt6vectorIbSaIbEEE]+0x10): undefined reference to `Widget<std::vector<bool, std::allocator<bool> > >::doSth()'
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经设法通过更改 Widget 的 doSth 签名来解决这个问题

void doSth() override
Run Code Online (Sandbox Code Playgroud)

到:

__attribute__((used)) void doSth() override
Run Code Online (Sandbox Code Playgroud)

但这是——正如我上面所说的——而是一种解决方法,而不是真正的解决方案。有谁知道为什么 Clang 无法处理这个问题?

下面是编译器资源管理器和 C++ 见解的链接以及最小的可重现示例,这些示例是从我的代码库中提取的,并减少到绝对最小值,以便重现该示例并显示我的意图。

编译器浏览器:https://godbolt.org/z/83dMMvozn

C++ 见解:https://cppinsights.io/s/e35151b2

更新

我删除了不需要的代码部分,并添加了另一个(可接受的)解决方法 - 我没有使用 lambda 作为“调用”调用的参数,而是使用了可调用结构 - 它“神奇地”起作用了 - 但是,我不明白为什么它不适用于 lambda。

#include <memory>
#include <type_traits>
#include <variant>
#include <vector>
#include <list>

struct …
Run Code Online (Sandbox Code Playgroud)

c++ clang template-meta-programming c++20 c++-templates

9
推荐指数
0
解决办法
364
查看次数