小编Vik*_*ehr的帖子

Emscripten应用程序未执行

运行从C++编译的asmjs\emscripten应用程序时,它突然开始记录:"run() called, but dependencies remain, so not running"到Web控制台,没有其他事情发生.我在主要的绝对开始时添加了一些cout,但即使它们没有达到.

该应用程序之前已成功执行,但突然间这种情况开始发生,我不知道是什么变化触发了这一点.

有谁知道如何调试这个?

更新

在尽可能多地删除源代码之后,只要我#include就会发生这种情况,即使由于我的主要只包含一个cout.

c++ emscripten asm.js

10
推荐指数
2
解决办法
897
查看次数

与三值比较函数相比,仅使用小于运算符进行排序

在C++/STL中,仅使用less-than运算符进行排序.尽管我不知道排序算法是如何实际实现的,但我认为其他操作是隐含的:

a > b *equals* b < a == true
a == b *equals* !(a < b) && !(b < a)
Run Code Online (Sandbox Code Playgroud)

与使用trivalue*compare函数(例如Java)相比,这对性能有好处,或者为什么要做出这样的设计决策呢?

我的假设是,任何trivalue compareto函数仍然必须实现这些比较,从而产生相同的性能.

**通过trivalue比较函数,我的意思是比较函数,它返回-1,0和1小于,等于和大于*

更新: 似乎太空船<=>运营商正在使用C++ 20,所以显然委员会认为只有使用的缺点operator<.

c++ sorting stl operator-overloading spaceship-operator

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

提升迭代器外观和dereference()函数

我正在尝试创建一个迭代器,它只能取消引用实际值类型,而不是引用.是否可以使用boost::iterator_facade,或者它是否要求我具有可由adress\reference返回的值.

为了更具说明性,我的迭代器返回一个std::pair引用,这意味着我的迭代器value_type不会存储在任何地方,而是在解除引用时动态创建(如std::map::iterator).

boost boost-iterators iterator-facade

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

是否在lock_guard析构函数之前或之后执行了复制返回操作?

get_a()功能安全的比赛条件或者我需要明确地复制str_get_b()为了有一个线程安全的功能?

class Class {
public:
  auto get_a() -> std::string {
    auto&& guard = std::lock_guard{mutex_};
    return str_;
  }
  auto get_b() -> std::string {
    auto&& guard = std::lock_guard{mutex_};
    auto str = str_;
    return str;
  }
private:
  std::mutex mutex_{};
  std::string str_{};
};
Run Code Online (Sandbox Code Playgroud)

注意:我知道Stack Overflow上有类似的问题,但我找不到明确回答这个问题的问题.

c++ destructor thread-safety race-condition stdmutex

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

引用绑定到临时的未定义行为的临时?

在下面的代码片段中,球体的生命周期是否以r未定义的值扩展?

 struct Sphere {
   auto& radius() const { return _radius;}
   float _radius{};
 };
 struct Capsule {
   auto sphere() const { return Sphere{12.0}; }
 };
 auto func() {
   auto capsule = Capsule{};
   const auto& r = capsule.sphere().radius();
   std::cout << r;
 }
Run Code Online (Sandbox Code Playgroud)

我知道const-references延长了临时的生命周期,但我不确定如果一个临时成员被绑定会发生什么.

注意:我非常怀疑这个片段的等价物对我造成了错误,但是Clang和Visual Studio都没有发出警告.

c++ reference lifetime

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

为什么范围v3算法不能管道化?

似乎范围v3中的算法不可链接,即:

const auto ints = std::vector<int>{1,2,1,3,1,4,1,5,1,6};
const auto num_ones = ints | ranges::count(1);
Run Code Online (Sandbox Code Playgroud)

...必须写成功能风格:

const auto num_ones = ranges::count(ints, 1);
Run Code Online (Sandbox Code Playgroud)

这是一种设计选择,只有返回新范围/容器的算法/操作才是可管理的吗?

c++ stl range-v3

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

信任回报价值优化

你如何使用返回值优化
是否有任何我可以信任现代编译器来使用优化的情况,或者我应该总是以安全的方式返回某种类型的指针/使用引用作为参数?

是否有任何已知的情况不能进行返回值优化?对我来说,返回值优化对于编译器来说相当容易.

c++ variable-assignment return-value-optimization

6
推荐指数
2
解决办法
893
查看次数

将模板渲染缓冲区绑定到opengl中的帧缓冲区

有没有人成功地做到了这一点?似乎我在模板渲染缓冲区中使用的索引格式glCheckFramebufferStatus(...)返回GL_FRAMEBUFFER_UNSUPPORTED.我已经成功地绑定了深度\颜色渲染缓冲区,但每当我尝试用我的模板缓冲区做同样的事情时(我说)GL_FRAMEBUFFER_UNSUPPORTED.

这是我的代码的片段:

// Create frame buffer
GLuint fb;
glGenFramebuffers(1, &fb);

// Create stencil render buffer (note that I create depth buffer the exact same way, and It works.
GLuint sb;
glGenRenderbuffers(1, &sb);
glBindRenderbuffer(GL_RENDERBUFFER, sb);
glRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX8, w, h);

// Attach color
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, cb, 0);

// Attach stencil buffer
glBindFramebuffer(GL_FRAMEBUFFER, fb);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rb);
// And here I get an GL_FRAMEBUFFER_UNSUPPORTED when doing glCheckFramebufferStatus()
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

注意:颜色附件是纹理而不是渲染缓冲

opengl framebuffer

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

移动哪个投掷?

据我所知,move-constructors和move-assign必须标记为noexcept,以便编译器在例如在向量内重新分配时使用它们.

但是,是否存在任何真实情况,其中move-assign,move-construct可能实际抛出?

更新:

例如,当构造不能进行无掷移动时,具有已分配资源的类.

c++ exception-handling move-semantics

6
推荐指数
2
解决办法
1192
查看次数

自 iOS 13.4 起不再显示购买对话框

iOS 13.4 开始,当行...

[[SKPaymentQueue defaultQueue] addPayment:payment]; 
Run Code Online (Sandbox Code Playgroud)

……被处决。

iOS 13.4之前,用户确认购买时会弹出一个对话框,但现在什么都没有。有谁知道可能导致此问题的原因?

笔记:

  • 这是一款基于 libSDL 和 gles 3.0 的全屏游戏。
  • 虽然 99% 的代码库是 C++,但应用内购买是用 Objective C++ 进行的
  • 它在 iOS 13.4 之前运行

objective-c objective-c++ in-app-purchase ios skpaymenttransaction

6
推荐指数
2
解决办法
1430
查看次数