小编Pav*_*nko的帖子

将constexpr数组扩展为一组非类型模板参数

假设我有一个编译时constexpr数组和一个可变参数类模板,其中包含一组与数组元素相同类型的非类型参数.

我的目标是使用数组中的值实例化类模板:

struct Container
{
    int containee[3];
};

constexpr Container makeContainer();

template <int... Elements> class Foo;

Foo<makeContainer().containee[0],
    makeContainer().containee[1],
    makeContainer().containee[2]> foo;
Run Code Online (Sandbox Code Playgroud)

上面的代码效果很好.但是,每当我需要实例化Foo模板时,我都不得不手动索引数组.我想编译器自动为我做这件事:

Foo<Magic(makeContainer().containee)> foo;
Run Code Online (Sandbox Code Playgroud)

我在cppreference做了一些RTFM,但这没有帮助.我知道std::forward<>(),但它不能应用于模板参数列表.

c++ templates template-meta-programming variadic-templates constexpr

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

Coverity Self-Build无法构建C++ 17应用程序

我正在尝试将Coverity Scan与使用C++ 17(ARM GCC Embedded v7.2)编写的嵌入式应用程序一起使用.应用程序本身构建良好,错误/无警告; 但是,Coverity Scan自构建工具(cov-analysis-linux64-2017.07最新版本)无法编译某些C++文件,但出现以下错误(删节):

[19888] EXECUTING: /home/pavel/opt/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/bin/as -I . -I src -I src/os_config -I eigen -I senoval -I legilimens -I popcop/c++ -I build/current_build_info -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -meabi=5 -alms=build/lst/ch.lst -o build/obj/ch.o /tmp/ccK73Qaa.s
"/home/pavel/opt/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/include/c++/7.2.1/bits/c++17_warning.h", line 32:
          error #35: #error directive: This file requires compiler and library
          support for the ISO C++ 2017 standard. This support must be enabled
          with the -std=c++17 or -std=gnu++17 compiler options.
  #error This file requires compiler and library support \
   ^
Run Code Online (Sandbox Code Playgroud)

可以看出,构建工具没有将选项传递 …

c++ gcc static-analysis coverity c++17

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

redis.conf 包括:“错误的指令或错误的参数数量”

我已经为 redis [/etc/redis/map.conf] 创建了这个配置:

include /etc/redis/ideal.conf
port 11235
pidfile /var/run/redis-map.pid
logfile /var/log/redis/map.log
dbfilename map.rdb
Run Code Online (Sandbox Code Playgroud)

如你所见,它包括/etc/redis/ideal.conf;这个文件确实存在并且我们有读取权限。还有另一个文件,略有不同;考虑 [/etc/redis/storage.conf]:

include /etc/redis/ideal.conf

pidfile /var/run/redis-storage.pid
port 8000
bind 192.168.0.3
logfile /var/log/redis/storage.log
dbfilename dump_storage.rdb
Run Code Online (Sandbox Code Playgroud)

我的问题是:我可以使用storage.conf启动 redis-server (并且一切正常),但是map.conf会导致以下错误:

Reading the configuration file, at line 1
>>> 'include /etc/redis/ideal.conf'
Bad directive or wrong number of arguments
failed
Run Code Online (Sandbox Code Playgroud)

redis 的版​​本是 2.2。

我哪里做错了?

configuration redis

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

复合 USB CDC 小工具不适用于 Windows 主机

我有一个带有 USB 设备接口的嵌入式 Linux 3.19 系统。设备需要向主机公开三个 USB 接口:一个虚拟网络接口(RNDIS 或 CDC ECM)和两个虚拟串行端口(CDC ACM)。该设备需要与现代Windows(7+)和Linux(3.16+)主机配合。

鉴于 Windows 本身不支持 CDC ECM,我们决定实现两种 USB 配置(这是一种流行的方法):

  • 配置1,具有以下接口:
    • RNDIS
    • CDC ACM 0
    • CDC ACM 1
  • 配置2,具有以下接口:
    • 疾病预防控制中心
    • CDC ACM 0
    • CDC ACM 1

目的是让 Windows 使用本机支持的 ​​RNDIS 第一个配置(Windows 始终选择第一个 USB 配置);并让非 Windows 主机使用带有 CDC ECM 的第二个配置。

我整理了一个脚本(基于 David Lechner 的类似脚本):http://pastebin.com/VtAusEmf。下面提供了脚本的相关部分(请点击链接查看完整的脚本,它相当大):

mkdir -p ${g}
echo "${usb_ver}" > ${g}/bcdUSB
echo "${dev_class}" > ${g}/bDeviceClass
echo "${vid}" > ${g}/idVendor
echo "${pid}" > ${g}/idProduct
mkdir ${g}/strings/0x409
echo "${mfg}" > ${g}/strings/0x409/manufacturer
echo …
Run Code Online (Sandbox Code Playgroud)

linux usb cdc embedded-linux rndis

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

如果__hash__被覆盖,则Pickle / dill无法处理循环引用

考虑以下MWE:

#import dill as pickle      # Dill exhibits similar behavior
import pickle

class B:
    def __init__(self):
        self.links = set()

class A:
    def __init__(self, base: B):
        self.base = base
        base.links.add(self)

    def __hash__(self):
        return hash(self.base)

    def __eq__(self, other):
        return self.base == other.base

pickled = pickle.dumps(A(B()))  # Success
print(pickle.loads(pickled))    # Not so much
Run Code Online (Sandbox Code Playgroud)

上面的示例失败,但有以下异常:

Traceback (most recent call last):
  File "./mwe.py", line 26, in <module>
    print(pickle.loads(pickled))
  File "./mwe.py", line 18, in __hash__
    return hash(self.base)
AttributeError: 'A' object has no attribute 'base'
Run Code Online (Sandbox Code Playgroud)

据我了解的问题,pickle在反序列化B.links …

python serialization pickle circular-reference dill

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

在Eclipse Oxygen中通过Ctrl +单击进行超链接导航不起作用

在从Eclipse Neon升级到Oxygen之后,我注意到在按住Ctrl键的同时单击定义我无法再浏览代码.索引器本身工作正常,我仍然可以通过按下F3或使用上下文菜单来跳转.

我正在使用带有C++的Eclipse CDT.

以下屏幕截图证明该功能已启用:

在此输入图像描述

我错过了什么?

c++ eclipse ide eclipse-cdt code-navigation

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

Python Fabric:将可执行文件放入远程计算机时保留其权限

我将可执行文件放入带有Fabric的远程服务器后丢失执行权限(文件是使用默认权限创建的).

Fabric是否提供了一种简单的方法来保持文件权限不变,或者我需要手动处理它们?

提前致谢.

python permissions fabric

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