问题列表 - 第318126页

在月球上跑步时,2+2等于八进制的多少?

这只是一个测试。

我在算术上很挣扎

我尝试使用我的脑袋,但没有工作

我在算术上很挣扎

我尝试用我的脑袋,但没有工作,我在算术上挣扎

我尝试用我的脑袋,但没有工作,我在算术上挣扎

我尝试用我的脑袋,但没有工作,我在算术上挣扎

我尝试使用我的脑袋,但没有工作

我在算术上很挣扎

我尝试使用我的脑袋,但没有工作

我在算术上很挣扎

我尝试使用我的脑袋,但没有工作

我在算术上很挣扎

我尝试使用我的脑袋,但没有工作

我在算术上很挣扎

我尝试使用我的脑袋,但没有工作

我在算术上很挣扎

我尝试使用我的脑袋,但没有工作

android

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

临时在访问()调用中?

我有一个关于在使用时返回对本地对象的引用的编译警告visit(),但我无法理解为什么......

我使用以下代码(有点做作,但这是出于演示目的):

#include <iostream>

template <class... Ts> struct overloaded : Ts... {
  using Ts::operator()...;
};

template <class... Ts> overloaded(Ts...) -> overloaded<Ts...>;


using namespace std;


class B {
public:
  B(int i) :
    i_(i) {}

  int get_i() const {
    return i_;
  }

private:
  int i_;
};

class D: public B {
public:
  D(int i) :
    B(i) {}
};

const B& as_base(const variant<B, D>& op) {
    return visit(overloaded {
        [](const B& b) { return static_cast<const B&>(b); },
        [](const D& d) { …
Run Code Online (Sandbox Code Playgroud)

c++ visitors temporary-objects

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

在已销毁对象的存储中使用当前对象是否安全?

在此代码示例中,使用放置 new 在另一个对象的存储中创建一个对象,并且永远不会访问释放的内存。

以下是事件的顺序:

  1. 新的 Object1 在分配的内存中创建。Object2 是一个联合体,因此不会被触及。
  2. 使用placement new 在Object1 内部创建Object2
  3. 对象 1 被破坏。对象 2 未受影响。
  4. 打印object2的内容
  5. 调用 Object2 析构函数
  6. Object1 的内存已删除

这安全吗?

#include <stdio.h>
#include <new>

struct Object2
{
    char a{1};
    char b{2};
    char c{3};
};

struct Object1
{
    //
    // disconnect Object2 lifetime from Object1
    //
    
    union
    {
        Object2 o;
    };

    char d{3};

    Object1()
    {
    }
};

int main(int argc, char* argv[])
{
    //
    // Create object1, internal object2 is not yet constructed
    //
    
    Object1* object1 = …
Run Code Online (Sandbox Code Playgroud)

c++ constructor lifetime language-lawyer

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

build_runner 显示错误未为类“ClassDeclaration”定义 getter“macroKeyword”

当我运行 build_runner 命令时,它显示以下错误:

Failed to build build_runner:build_runner:
../../.pub-cache/hosted/pub.dev/dart_style-2.3.5/lib/src/front_end/ast_node_visitor.dart:251:16: Error: The getter 'macroKeyword' isn't defined for the class 'ClassDeclaration'.
  - 'ClassDeclaration' is from 'package:analyzer/src/dart/ast/ast.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-6.2.0/lib/src/dart/ast/ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'macroKeyword'.
          node.macroKeyword,
                ^^^^^^^^^^^^
../../.pub-cache/hosted/pub.dev/dart_style-2.3.5/lib/src/source_visitor.dart:595:19: Error: The getter 'macroKeyword' isn't defined for the class 'ClassDeclaration'.
  - 'ClassDeclaration' is from 'package:analyzer/src/dart/ast/ast.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-6.2.0/lib/src/dart/ast/ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named …
Run Code Online (Sandbox Code Playgroud)

dart flutter build-runner

11
推荐指数
3
解决办法
1139
查看次数

调用不完整类型的成员函数在 gcc 中编译,但在 clang 和 msvc 中不编译

这是一个例子:

struct TestClass {
  void testFunction() const {}
  static TestClass* ptr_;
  constexpr static auto funcPtr = +[](){ ptr_->testFunction(); };
};

TestClass* TestClass::ptr_ = new TestClass();

int main() {
  TestClass::funcPtr();
  delete TestClass::ptr_;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这会在gccand 中编译,不会在clangand中编译msvc。哪个编译器是正确的?这是一个错误吗gcc

这是clang错误消息:

<source>:4:46: error: member access into incomplete type 'TestClass'
    4 |   constexpr static auto funcPtr = +[](){ ptr_->testFunction(); };
      |                                              ^
<source>:1:8: note: definition of 'TestClass' is not complete until the closing '}'
    1 …
Run Code Online (Sandbox Code Playgroud)

g++ visual-c++ language-lawyer clang++ c++17

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

如果 A == B,则将 Rc&lt;A&gt; 向下转换为 Rc&lt;B&gt;

我想知道以下代码是否有效(也许有一种内置/安全的方法可以向下转换Rc<dyn SomeTrait>Rc<SomeType>?我找不到任何),最重要的是,它安全吗?

use std::any::*;
use std::rc::*;

// NOTE: apparently adding Any here is REQUIRED
//       otherwise it doesn't work at all,
//       I have no idea why
trait SomeTrait: Any {}
struct SomeType;

impl SomeTrait for SomeType {}

fn rc_downcaster<A: 'static, B: ?Sized + 'static>(b: Rc<B>) -> Option<Rc<A>> {
    if Any::type_id(&*b) == TypeId::of::<A>() {
        Some(unsafe {
            let p = Rc::into_raw(b);
            Rc::from_raw(p as *const A)
        })
    } else {
        None
    }
}


fn main() {
    let x: …
Run Code Online (Sandbox Code Playgroud)

unsafe rust

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

如何创建 list zipper 数据类型的 list zipper 的 comonad 实例?

我听说每个拉链都是一个共元,而我认为每个与其自身组成的拉链仍然是一个拉链,因此它是一个共元。所以我决定创建一个。

\n

我有以下拉链列表:

\n
{-# LANGUAGE DeriveFunctor #-}\n{-# LANGUAGE InstanceSigs #-}\nmodule ListZipper where\nimport Control.Comonad\nimport Data.List (unfoldr)\nimport Test.QuickCheck (Arbitrary (arbitrary))\n\ndata ListZipper a = ZList {previous :: [a], currentL :: a, next :: [a]} deriving (Functor, Eq)\n\ngoLeft, goRight :: ListZipper a -> Maybe (ListZipper a)\ngoLeft  (ZList (p:ps) cur ns) = Just $ ZList ps p (cur : ns)\ngoLeft _  = Nothing\ngoRight (ZList ps cur (n:ns)) = Just $ ZList (cur : ps) n ns\ngoRight _ = Nothing\n\nfork :: b -> (b, b)\nfork …
Run Code Online (Sandbox Code Playgroud)

haskell instance composition comonad

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

使用 str_detect() 和 contains() 之间的区别?

我知道这可能是一个愚蠢的问题,但我很好奇是否有任何区别,我更喜欢使用 str_detect 因为语法在我的大脑中更有意义。

r stringr dplyr tidyselect

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

非类型模板参数的静态存储持续时间和生命周期是多少?如何将其用于编译时计算?

C++ Weekly - Ep 313 -constexpr我花了 5 年时间才解决的问题!Jason Turner 演示了几种编译时技术,以便std::string在编译时构造 a,然后将其传递给 astd::string_view以在运行时使用。

核心问题是,std::string使用new编译时构造的std::string必须在单个表达式中使用,因为在相同的表达式中new必须有相应的(抱歉近似的措辞)。deleteconstant/compile-time context

由于代码很长,我把它放在问题的最后。

为了做到这一点,他首先展示了如何通过将数据保存在函数内部来std::string将数据从 复制到 an (我目前不确定它是否只能通过函数来​​实现)。std::arrayconstevalconstexpr

我完全不明白的是,他如何使用非类型模板参数std::array(NTTP)将立即函数调用的生命周期“延长”到大约 19 分钟。

对标准的理解(可能是错误的)是 NTTPtemplate parameter object与静态存储持续时间相关联:

命名类类型 T 的非类型模板参数的 id 表达式表示类型为 const T 的静态存储持续时间对象,称为模板参数对象,它与模板参数等价([temp.type])对应的模板参数已转换为模板参数的类型([temp.arg.nontype])。没有两个模板参数对象是模板参数等效的。

然而我尝试使用一个更简单(且人为的)示例:

template <auto Value>
consteval const auto& make_static() {
    return Value;
}

int main() {
    [[maybe_unused]] …
Run Code Online (Sandbox Code Playgroud)

c++ compile-time c++20 non-type-template-parameter

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

为什么可以在函数内的常量表达式中使用作为 constexpr 函数参数的参数传递的 lambda 的返回值?

问题标题的措辞可能不正确,我会很乐意根据您的建议进行修复。

我的问题可以用这个片段来说明:

#include <array>

template <typename Callable>
constexpr auto make_array_ok(Callable callable) {
    return std::array<int, callable()>{};
};
// constexpr auto make_array_bad(std::size_t s)
// {
//     return std::array<int,s>{};
// };

int main(int argc, char**) {
    static_cast<void>(argc);

    auto size = []() { return std::size_t{42}; };

    // fails to compile -- as I expected
    // auto size_dyn = [argc]() { return std::size_t(argc); };
    // auto a = make_array_ok(size_dyn);

    // also fails to compile -- but why?
    // auto size_capt = [arg = size()]()constexpr{return arg;}; …
Run Code Online (Sandbox Code Playgroud)

c++ constant-expression callable-object constexpr-function

9
推荐指数
2
解决办法
678
查看次数