小编cro*_*mod的帖子

std :: errc,如何在retval中表示成功

我想写一个像这样的c ++函数:

#include <system_error>
std::errc f() { return std::errc::success; }
Run Code Online (Sandbox Code Playgroud)

但我无法理解如何使用std :: errc'enum class'type返回成功的值(在本例中为0).我看到的一种方法是返回int:

template <typename E>
constexpr typename std::underlying_type<E>::type to_underlying(E e) {
    return static_cast<typename std::underlying_type<E>::type>(e);
}

int f() { is_succ() ? 0 : to_underlying(err); }
Run Code Online (Sandbox Code Playgroud)

但它对我来说看起来很难看.是从标准c ++ 0x14中的函数返回面向C的成功/错误代码的标准方法吗?

PS.我正在使用MS VC 2015补丁2.

c++ c++14

7
推荐指数
3
解决办法
1590
查看次数

关于boost-python:dyld:未找到符号:_PyBaseObject_Type

当我运行我的代码时,我遇到了关于boost-python的问题.像这样:

dyld: Symbol not found: _PyBaseObject_Type
Referenced from: /opt/local/lib/libboost_python-mt.dylib
Expected in: flat namespace
Run Code Online (Sandbox Code Playgroud)

几个月前我的项目可以正常运行.但是现在,当我重新配置环境时,它无法运行.

- 几个月前,我使用自制软件来配置环境,就像这样:

brew install boost
brew install python
brew install boost-python
brew install opencv(My project is an Opencv project)
Run Code Online (Sandbox Code Playgroud)

- 但现在,它不起作用,错误就像上面一样.所以我使用Macports来安装boost,如下所示:

sudo port install boost
sudo port install py27-pip
sudo port select --set python python27
sudo port select --set pip pip27
sudo port install py27-numpy
brew install opencv(The version of opencv in port is 3.0, so i use brew)
Run Code Online (Sandbox Code Playgroud)

- 但它有同样的问题.

谁知道如何处理这个问题?是关于boost-python的吗?我应该如何正确安装boost-python?它是关于boost/boost-python的版本?

c++ python boost ld boost-python

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

如何在 CMake 中使用正则表达式的 {n} 语法

我有这个字符串“2017-03-05-02-10-10_78205”,我想将它与此模式匹配,[0-9]{4}(-[0-9]{2}){5}_[0-9]+但它在 CMake 上不起作用。在 CMake 中查看此示例:

set(stuff "2017-03-05-02-10-10_78205")
if( "${stuff}" MATCHES "[0-9]{4}(-[0-9]{2}){5}_[0-9]+")
  message("Hello")
endif()
Run Code Online (Sandbox Code Playgroud)

CMake 似乎不支持语法{n}。显然,我用那个模式解决了我的问题[0-9-]+_[0-9]+

不过,我想知道我的语法是否有问题{n}。CMake 支持吗?如果没有,如何使用 CMake 定义特定的重复次数?

我使用的是旧的 CMake 版本 (2.8.11.2)。

regex cmake repeat

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

Perl Threads :: Queue

我正在创建一个Thread :: Queue元素数组.我是这样做的:

for (my $i=0; $i < $queues_amount; $i++){
    $queues[i]=Thread::Queue->new;
}
Run Code Online (Sandbox Code Playgroud)

然而,虽然我正在用这样的元素填充每个队列

$queues[$index]->enqueue($element);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

无法在未定义的值上调用方法"enqueue"...

你能帮我找出问题所在吗?

我的perl版本是5.12.2.

perl multithreading

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

标签 统计

c++ ×2

boost ×1

boost-python ×1

c++14 ×1

cmake ×1

ld ×1

multithreading ×1

perl ×1

python ×1

regex ×1

repeat ×1