小编mir*_*irk的帖子

尾随返回类型语法样式应该成为新C++ 11程序的默认样式吗?

C++ 11支持新的函数语法:

auto func_name(int x, int y) -> int;
Run Code Online (Sandbox Code Playgroud)

目前此函数将声明为:

int func_name(int x, int y);
Run Code Online (Sandbox Code Playgroud)

新风格似乎还没有被广泛采用(比如在gcc stl中)

但是,这种新风格是否应该在新的C++ 11程序中随处可见,还是仅在需要时使用?

就个人而言,我更喜欢旧款式,但是混合风格的代码库看起来很丑陋.

c++ auto c++11 trailing-return-type

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

函数typedef中的noexcept说明符

函数typedef中是否接受noexcept说明符?

如:

 typedef void (*fptr)()  noexcept;
Run Code Online (Sandbox Code Playgroud)

直觉上,noexcept说明符似乎有意义,因为它们允许在调用者方面进行一些优化.

我从gcc 4.6.1得到了一个复杂的答案.

 typedef void (*fptr)()  noexcept;
Run Code Online (Sandbox Code Playgroud)

导致:错误:使用异常规范声明'fptr'

但:

template<void (*FPtr)()  noexcept>
struct A{};
Run Code Online (Sandbox Code Playgroud)

编译时没有警告.

c++ function-pointers noexcept c++11

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

$ PYTHONSTARTUP与python 2.7和python 3.2

我终于开始在Linux上使用python 3和python 2.7.

我使用$ PYTHONSTARTUP定义的启动脚本设置我的python shell.由于不兼容,我无法为两个版本使用相同的脚本.

为python 2.7获取一个脚本的最简单方法是什么,另一个用于python 3.2的脚本是什么?

python startupscript python-3.x

12
推荐指数
2
解决办法
1149
查看次数

forward声明模板别名

我有一个别名模板,使用using指令定义:

template<typename A>
using T=TC<decltype(A::b),decltype(A::c)>;
Run Code Online (Sandbox Code Playgroud)

C++ 11是否提供了一种转发声明此模板别名的机制T

我试过了:

template<typename> struct T;
Run Code Online (Sandbox Code Playgroud)

和:

template<typename>
using T;
Run Code Online (Sandbox Code Playgroud)

但两者都返回编译器错误("与先前的声明冲突").我使用的是gcc 4.8.

使这个工作的语法是什么?

c++ templates typedef c++11

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

将一个小数字散列到随机查看的64位整数

我正在寻找一个哈希函数,它运行在一个小整数(比如在0 ... 1000范围内)并输出64位int.

结果集应该看起来像64位整数的随机分布:均匀分布,结果之间没有线性相关.

我希望一个只需要几个CPU周期才能执行的函数.(代码将使用C++).

我考虑将输入乘以一个大素数并取模2**64(类似于线性全等生成器),但输出之间存在明显的依赖关系(在低位中).

谷歌搜索没有显示任何内容,但我可能使用错误的搜索字词.

这样的功能存在吗?


一些背景信息:

我想避免在算法中使用带有伪随机数的大型持久表,并在运行中计算随机数字.

安全不是问题.

random algorithm hash

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

数组成员初始化用户定义的类型

g ++ 4.7支持数组成员初始化,我开始玩它.

下面的代码无法编译.

struct A
{
   A(int){};
   A(const A&) = delete;
   A& operator=(const A&) = delete;
   ~A(){};
};

struct B
{
   B():
      a{{0},{1}}
   {};
   A a[2];
};

B b;
Run Code Online (Sandbox Code Playgroud)

gcc 4.8(预发布)的错误消息是:

n.cc: In constructor ‘B::B()’:
n.cc:12:20: error: use of deleted function ‘A::A(const A&)’
           a{{0},{1}}
             ^
n.cc:4:8: error: declared here
        A(const A&) = delete;
        ^
Run Code Online (Sandbox Code Playgroud)

有没有办法让这段代码有效?我不能轻易地改变A的构造函数,析构函数.我似乎需要一个move-constructor或copy-constructor来初始化数组,但这似乎是违反直觉的,因为我真正想要的就是就地构造.

如果我在2个成员a0和a1中分割[2]并分别构造它们,它就可以工作.然而,这看起来很可疑.

c++ constructor c++11

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

将空目录添加到tarfile

如何在python中的tarfile中添加一个空目录,而不先在磁盘上创建它?

在我的本地文件系统中创建一个空目录,并将其添加到tar文件很容易,但会产生不必要的开销.

但是,直接在tar文件中创建一个似乎并非易事.我的尝试看起来像:

import tarfile

with tarfile.open("test.tbz2",mode='w:bz2') as t:
    t.add("conf_dir") # does not work
    t.add(tarfile.TarInfo("conf_dir")) # does not work
Run Code Online (Sandbox Code Playgroud)

python tar

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

将最后一个git commit id放在rpm中的位置

我想将最后一个"git commit id"添加到我的rpms中,以便有一种简单的方法来跟踪用于构建包的源代码.

我可以使用rpm release标记,但是在快照的情况下,这已经用于版本号和日期.我不想进一步超载这个.

是否有另一个标记或机制来存储rpm中的最后一个commit-id?

git rpm rpmbuild

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

LettuceConnectionFactory 与 SentinelTopologyProvider

我通过 spring boot API 使用生菜org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory

我的bean配置为

@Bean
public LettuceConnectionFactory lettuceSentinelConnectionFactory() {
        RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration(mastername, new HashSet<>(sentinelnodes));
        return new LettuceConnectionFactory(sentinelConfig);
    }
Run Code Online (Sandbox Code Playgroud)

这工作正常,除了拓扑更改后重新连接导致异常之外。

io.lettuce.core.RedisCommandExecutionException: READONLY You can't write against a read only slave.
Run Code Online (Sandbox Code Playgroud)

一些错误报告似乎证实了这种行为

我怀着极大的兴趣读到 Lettuce 为哨兵SentinelTopologyProvider实现了一个动态拓扑发现器,它应该可以优雅地解决这个问题。

但是我无法让 LettuceConnectionFactory 使用这个动态 SentinelTopologyProvider,并且谷歌搜索也没有返回任何内容。

任何人都可以提供有关如何编写此代码的提示或一些示例代码吗?

failover redis sentinel lettuce

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

在virtualenv中安装omniorb python

我试图在virtualenv for python中安装omn​​iorb.

使用omniorb包含的配置脚本执行此操作似乎相当困难.

有没有人知道omniorb的pip,setup.py或easy_install脚本?

python corba pip virtualenv

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

constexpr与operator | =

我尝试编写一个函数,它使用C++ 0x constexpr返回一个只有输入集最高位的整数.

constexpr inline uint64_t
get_highest_bit(uint64_t p)
{
  return 
     (p|=(p>>1)),
     (p|=(p>>2)),
     (p|=(p>>4)),
     (p|=(p>>8)),
     (p|=(p>>16)),
     (p|=(p>>32)),
     (p-(p>>1));
}
Run Code Online (Sandbox Code Playgroud)

这使用gcc 4.6.1导致编译时失败.

error: expression ‘(p <unknown operator> ((p >> 1) | p))’ is not a constant-expression
Run Code Online (Sandbox Code Playgroud)

请注意,它没有constexpr关键字.

我的问题是:

为什么这不起作用?我可以看到运算符| =不是constexpr,但对于内置类型是否重要?

有没有一种简单的方法可以将此函数写为constexpr?我希望它在运行时合理有效,我关心可读性.

constexpr c++11

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

如果未在命令行中指定,则仅在psql脚本中设置变量

我想给我的psql-scripts命令行指定一些变量的选项.

 psql -v myVar=myValue
Run Code Online (Sandbox Code Playgroud)

但是我发现无法在sql-script本身中提供这些变量的默认值.语法:

`\set MyVar defaultValue` 
Run Code Online (Sandbox Code Playgroud)

myValue无条件地覆盖psql命令行上指定的值.

有没有办法检查是否在psql中设置了变量?

postgresql psql

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

list-initialization与构造函数组合

我有一个简单布局的结构,类似于:

struct A
{
   int a,b;
};
Run Code Online (Sandbox Code Playgroud)

我已经在整个地方使用统一初始化来创建我的结构,如:

A obj{2,3};
Run Code Online (Sandbox Code Playgroud)

后来,我在A中添加了一个构造函数.它现在看起来像:

struct A
{
  int a,b;
  A(){}
};
Run Code Online (Sandbox Code Playgroud)

这打破了统一初始化的使用.有没有一种简单的方法可以让这项工作重新开始.也许通过使用默认关键字?

我希望有一些简单的东西,以匹配我的简单结构.

c++ c++11 list-initialization

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