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程序中随处可见,还是仅在需要时使用?
就个人而言,我更喜欢旧款式,但是混合风格的代码库看起来很丑陋.
函数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)
编译时没有警告.
我终于开始在Linux上使用python 3和python 2.7.
我使用$ PYTHONSTARTUP定义的启动脚本设置我的python shell.由于不兼容,我无法为两个版本使用相同的脚本.
为python 2.7获取一个脚本的最简单方法是什么,另一个用于python 3.2的脚本是什么?
我有一个别名模板,使用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.
使这个工作的语法是什么?
我正在寻找一个哈希函数,它运行在一个小整数(比如在0 ... 1000范围内)并输出64位int.
结果集应该看起来像64位整数的随机分布:均匀分布,结果之间没有线性相关.
我希望一个只需要几个CPU周期才能执行的函数.(代码将使用C++).
我考虑将输入乘以一个大素数并取模2**64(类似于线性全等生成器),但输出之间存在明显的依赖关系(在低位中).
谷歌搜索没有显示任何内容,但我可能使用错误的搜索字词.
这样的功能存在吗?
一些背景信息:
我想避免在算法中使用带有伪随机数的大型持久表,并在运行中计算随机数字.
安全不是问题.
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]并分别构造它们,它就可以工作.然而,这看起来很可疑.
如何在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) 我想将最后一个"git commit id"添加到我的rpms中,以便有一种简单的方法来跟踪用于构建包的源代码.
我可以使用rpm release标记,但是在快照的情况下,这已经用于版本号和日期.我不想进一步超载这个.
是否有另一个标记或机制来存储rpm中的最后一个commit-id?
我通过 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,并且谷歌搜索也没有返回任何内容。
任何人都可以提供有关如何编写此代码的提示或一些示例代码吗?
我试图在virtualenv for python中安装omniorb.
使用omniorb包含的配置脚本执行此操作似乎相当困难.
有没有人知道omniorb的pip,setup.py或easy_install脚本?
我尝试编写一个函数,它使用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?我希望它在运行时合理有效,我关心可读性.
我想给我的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中设置了变量?
我有一个简单布局的结构,类似于:
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)
这打破了统一初始化的使用.有没有一种简单的方法可以让这项工作重新开始.也许通过使用默认关键字?
我希望有一些简单的东西,以匹配我的简单结构.