小编Ker*_*g73的帖子

Constexpr如果是非bool条件

我似乎找到了Clang和GCC不同意的东西.这是代码:

int main() {
  if constexpr (2) {}
}
Run Code Online (Sandbox Code Playgroud)

这成功编译了GCC 7.4.0,但它与Clang 7.0.0失败并出现此错误消息:

test.cpp:3:17: error: constexpr if condition evaluates to 2, which cannot be narrowed to type 'bool'
      [-Wc++11-narrowing]
  if constexpr (2) {}
                ^
1 error generated.
Run Code Online (Sandbox Code Playgroud)

cppreference似乎没有提到"缩小",所以这看起来像一个Clang bug,但我不完全确定.如果这是任何一个编译器的错误,是否已报告?

c++ language-lawyer compiler-bug implicit-conversion c++17

41
推荐指数
2
解决办法
1688
查看次数

std :: cspan发生了什么?

std::span已被选入C ++ 20。我假设与一起std::span将有一个方便的别名,定义如下:

template <class T, size_t Extent = dynamic_extent>
using cspan = span<const T, Extent>;
Run Code Online (Sandbox Code Playgroud)

对我来说,这似乎是一个非常方便的别名。我可能cspan会比使用更多span!根据cppreferencecspan不存在。有一个提到cspan本文中这似乎暗示,是在一些点的标准。我找不到其他提及。

那怎么了cspan?它被删除了吗?它曾经存在过吗?

c++ language-lawyer c++20 std-span

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

Xcode - Mac App - 启动时Bootstrap检入错误

我正在用Xcode创建一个C++ Mac应用程序.我以前做过这个没有任何问题,但几个星期前我开始了一个新项目,这个问题.

发布时的消息

当我启动应用程序时,此消息在调用后出现在控制台中 SDL_GL_CreateContext

bootstrap_check_in():  (os/kern) unknown error code (44c)
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这个,我不知道这意味着什么.该应用程序仍然启动.

打开弹出窗口

osascript不再有效.调用此命令时

osascript  -e 'try' -e 'POSIX path of ( choose file name with prompt "Save screenshot" default name "Screenshot.png" )' -e 'on error number -128' -e 'end try'
Run Code Online (Sandbox Code Playgroud)

此消息显示在控制台中:

2017-11-25 10:50:19.837159+1030 osascript[7910:487965] +[NSXPCSharedListener endpointForReply:withListenerName:]: an error occurred while attempting to obtain endpoint for listener 'com.apple.view-bridge': Connection interrupted
2017-11-25 10:50:19.838056+1030 osascript[7910:487963] *** Assertion failure in +[NSXPCSharedListener connectionForListenerNamed:fromServiceNamed:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/ViewBridge/ViewBridge-341.1/NSXPCSharedListener.m:421
2017-11-25 10:50:19.838724+1030 osascript[7910:487963] *** Assertion failure in -[NSVBSavePanel viewWillInvalidate:], …
Run Code Online (Sandbox Code Playgroud)

c++ opengl macos xcode

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

中点粗椭圆绘制算法

我真的很接近使粗椭圆算法起作用,但是我有点麻烦。我从这里开始采用中点粗圆算法,从这里开始采用中点椭圆算法,并且我试图将它们组合在一起以获得中点粗椭圆算法。我这样做是因为Googling的“中点粗椭圆算法”没有显示我在寻找什么。我的尝试输出类似于一个粗圆圈(图像在帖子底部)。

这是图像代码(只是一个占位符):

struct Point {
  int x, y;
};

struct Image {};
using Color = int;

void setPixel(Image &, Color, Point) {
  // ...
}

void horiLine(Image &image, Color color, Point first, int last) {
  while (first.x <= last) {
    setPixel(image, color, first);
    first.x++;
  }
}

void vertLine(Image &image, Color color, Point first, int last) {
  while (first.y <= last) {
    setPixel(image, color, first);
    first.y++;
  }
}
Run Code Online (Sandbox Code Playgroud)

这是中点粗圆算法:

void midpointCircleThick(
  Image &image,
  Color color,
  Point center, …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm math graphics

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

什么会导致彩色 mac 应用程序图标显示为灰度?

注:MCVE在最后

我更新了我的 mac 应用程序的 AppIcon 和 Document 图标。图标已更改,但它们也显示为灰度。源文件 (PNG) 是彩色的。图标在 Xcode 中显示为彩色,但在上下文中(停靠栏中的 AppIcon 和 Finder 中的文档图标)是灰度的。我已经尝试过一些显而易见的事情,比如清理构建文件夹、重新启动 Xcode 和重新启动 Finder,但我不知道还能尝试什么。

这是图标在上下文中的显示方式:

Dock 中的图标 桌面上的图标

这是图标在 Xcode 中的显示方式:

Xcode 中的图标

我所做的只是更新了一些 PNG!一切仍然正常运行。该应用程序仍会启动,双击文档可打开该应用程序。问题是图标是灰色的。


在更改图标的 git commit 中,唯一更改的是一些 PNG 和一些文档文件(自述文件中的链接、屏幕截图和其他一些内容)。如果我在更改图标之前检查提交,则一切正常。如果我签出更改图标的提交,它们是灰色的。

我一直在查看 PNG 本身以试图解决这个问题。我正在pngcheck用来检查文件。

旧(工作)16x16 图标:

chunk IHDR at offset 0x0000c, length 13
  16 x 16 image, 32-bit RGB+alpha, non-interlaced
chunk bKGD at offset 0x00025, length 6
  red = 0x00ff, green = 0x00ff, blue = 0x00ff
chunk IDAT at offset 0x00037, length 142
  zlib: deflated, 2K window, maximum …
Run Code Online (Sandbox Code Playgroud)

macos xcode macos-mojave

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

JavaScript 数组到 PNG?- 客户端

有没有办法将二维十六进制代码数组转换为 png 图像?

数组看起来像这样(只是大得多)

[
  [
    '#FF0000',
    '#00FF00'
  ],
  [
    '#0000FF',
    '#000000'
  ]
]
Run Code Online (Sandbox Code Playgroud)

从这个数组,图像应该是这样的

在此处输入图片说明

如果该方法不适用于这样的数组,那么它将使用什么类型的数组?

javascript arrays png

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

单个函数中的多个参数包?

我正在尝试创建一个带有两个对象参数包的函数。有两个模板化基类,我想将派生类的实例传递给此函数。考虑这个例子。

template <int N>
struct First {};

template <int N>
struct Second {};

// there are a few of these
struct FirstImpl : First<5> {};
struct SecondImpl : Second<7> {};

template <int... firstInts, int... secondInts>
void function(float f, First<firstInts> &... first, Second<secondInts> &... second) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

我想做的就是function像这样打电话

FirstImpl firstImpl;
OtherFirstImpl otherFirstImpl;
SecondImpl secondImpl;
OtherSecondImpl otherSecondImpl;
function(9.5f, firstImpl, otherFirstImpl, secondImpl, otherSecondImpl);
Run Code Online (Sandbox Code Playgroud)

但这个例子无法编译。编译器似乎试图将所有内容打包到第二个参数包中,但由于FirstImpl无法隐式转换而失败Second<N>

我该如何解决这个问题?

c++ variadic-functions variadic-templates c++17

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

如何从另一个右值成员函数调用右值成员函数?

我正在尝试创建一个只应该暂时存在的类。我正在使用它来创建一个类似于函数的部分应用的界面。这是我正在尝试做的一个愚蠢的例子。

struct Adder {
  explicit Adder(const int &leftOp)
    : leftOp(leftOp) {}

  int add(const int rightOp) const {
    return leftOp + rightOp;
  }

  //note that addTwice calls add
  int addTwice(const int rightOp) const {
    return add(rightOp) + add(rightOp);
  }

private:
  const int &leftOp;
};

struct Calculator {
  explicit Calculator(const int leftOp)
    : leftOp(leftOp) {}      

  Adder add() const {
    return Adder(leftOp);
  }

  void setLeftOp(const int newLeftOp) {
    leftOp = newLeftOp;
  }

private:
  int leftOp;
};
Run Code Online (Sandbox Code Playgroud)

计算器就是这样使用的。

Calculator myCalculator(4);
const int myNum = …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

5
推荐指数
0
解决办法
135
查看次数

属性可以应用于构造函数参数吗?

Clang 8.0.0 和 GCC 9.1.0 似乎不同意这是否是有效代码。

struct Foo {
  Foo([[maybe_unused]] int x) {}
};
int main() {}
Run Code Online (Sandbox Code Playgroud)

Clang 不产生警告(即使使用-Wall -Wextra -Wpedantic),但 GCC 产生此错误:

test.cpp:2:7: error: expected unqualified-id before '[' token
    2 |   Foo([[maybe_unused]] int x) {}
      |       ^
test.cpp:2:7: error: expected ')' before '[' token
    2 |   Foo([[maybe_unused]] int x) {}
      |      ~^
      |       )
Run Code Online (Sandbox Code Playgroud)

那么哪个编译器有错误?

c++ language-lawyer compiler-bug

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

如何处理 PNG 文件中的伽马校正和颜色?

我正在开发一个图像绘制程序,但我对色彩空间感到非常困惑。我对伽玛的了解越多,我知道的就越少(没有多大帮助)。

在内部,绘图程序会将图像存储为 8 位 sRGB,然后转换为 16 位线性进行合成和过滤操作。也许我应该存储 16 位线性,然后在导出时转换为 8 位 sRGB?我很想在这方面提供一些建议。目前,我不确定 Qt 将 RGB 像素解释为什么颜色空间!

据我了解,sRGB 接近大多数显示器使用的色彩空间,因此从 sRGB 转换到显示器色彩空间不会对图像数据产生太大影响。查看 sRGB 数据,就好像它在正确的色彩空间中一样可能会非常接近。

目标

绘图程序显示 sRGB 图像。我想将这些 sRGB 图像保存到 PNG 文件中。当我在创建图像的同一台计算机上打开这个 PNG 文件(在 Mac 上使用预览)时,它看起来应该与艺术家在绘图程序中看到的完全一样,并且具有相同的颜色值(用数字颜色检查仪表)。不同的显示器和不同的操作系统使用不同的色彩空间。这些色彩空间可能不“适合”用于创建图像的系统的色彩空间。当我在不同的显示器甚至不同的计算机上打开 PNG 时,图像应该看起来尽可能与原始图像相似,但可能具有不同的颜色值。

实验

绘图程序似乎正确显示图像(我认为)。问题是PNG。我正在使用 Qt 并使用QImage::save. 如果我需要更多控制,我愿意使用 libPNG。

为了测试,我正在绘制一个 5x5 的图像,其中0 63 127 191 255包含红色和绿色的颜色值。

绘图程序截图

当我使用 Digital Color Meter 对绘图程序渲染的图像进行采样时,像素值没有变化。3,3使用 DCM 采样的像素191 191 0应该是这样。每个像素之间都有明显的对比。

当我截取屏幕截图时,屏幕截图文件中的像素值不同。3,3在预览中查看时使用 DCM 采样的像素为192 191 0. 3,3存储在文件中的像素是 …

c++ qt png colors libpng

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