\n\n类型“typeof import("/home/thrymr/Desktop/ILMCT 2/ilmct-frontend/node_modules/@angular/core/index")”上不存在属性“\xc9\xb5unwrapWritableSignal”。
\n
项目已成功编译并运行,但无论我在[(ngModel)]. 原因是什么以及如何消除此错误?
我尝试了一切,比如卸载我的 vs code 并再次安装,再次克隆项目。使用 Angular 版本为 14,Node.js 版本为 18
\n\n\n版主注:这似乎是最新版本的 Angular Language IDE 扩展中的一个错误。请不要添加仅指向该错误或告诉人们降级的新答案。
\n
在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)
无锁提高效率
我想知道如何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) 我得到这段代码的来源声称它的时间复杂度是 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( ) 也可以呢?
我将一个矩阵输入到一个函数中,我想输出它本身的乘法。我无法设法以正确的格式返回结果。
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) 我目前正在将 a 舍入std::chrono::duration<float>为std::chrono::duration<uint32_t>,当我给它超出范围的值时,它会舍入为 ,1s而不是4294967295s。
看看标准,它说
Run Code Online (Sandbox Code Playgroud)template <class ToDuration, class Rep, class Period> constexpr ToDuration round(const duration<Rep, Period>& d);[...]
返回:其中可表示的值 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, …
我正在尝试编写一个简单的 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) 我有一个数据类型,其中包含一些信息,并且可能会也可能不会存储额外的数据。我们称之为碎片。我定义了一个具有一些常见功能的基类:
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) 我有一些非常简单的基准测试,通过 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) 我遇到了一个非常奇怪的 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)