小编Any*_*orn的帖子

从构造函数初始值设定项中抛出异常

从构造函数初始值设定项中抛出异常的最佳方法是什么?

例如:

class C {
  T0 t0; // can be either valid or invalid, but does not throw directly
  T1 t1; // heavy object, do not construct if t0 is invalid,  by throwing before
  C(int n)
    : t0(n), // throw exception if t0(n) is not valid
      t1() {}
};
Run Code Online (Sandbox Code Playgroud)

我想也许制作包装纸,比如说t0(throw_if_invalid(n)).

处理此类案件的做法是什么?

c++ exception ctor-initializer

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

C++删除static_cast <void*>(指针)行为

假设代码执行以下操作:

T *pointer = new T();
delete static_cast<void*>(pointer);
Run Code Online (Sandbox Code Playgroud)

结果是什么?未定义,内存泄漏,内存被删除?

c++ casting delete-operator

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

将fortran 77函数传递给C/C++

是否可以将fortran 77函数作为回调函数指针传递给C/C++?如果是这样,怎么样?

我在网上找到的信息与fortran 90及以上相关,但我遗留的代码库是77.

非常感谢

c c++ fortran fortran77 fortran-iso-c-binding

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

HDF5写线程并发

HDF5能够自己处理多个线程,还是必须进行外部同步?OpenMP示例表明后者.

如果是前者,那么定义要写入的数据空间的正确方法是什么?

concurrency multithreading hdf5

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

通过unix shell管道

什么是只返回输入的UNIX shell程序?

例如

> echo "test" | $pass
> test # output
Run Code Online (Sandbox Code Playgroud)

bash shell

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

CUDA,在运行时找出内核中的寄存器数量

如何找出 cuda 内核在运行时使用的寄存器数量?我知道如何在编译过程中查找信息,但我不想在其中对数字进行硬编码

谢谢

cuda

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

应用于对象的C++成员函数

我希望通过将其作为模板参数传递来调用成员函数,而不使用boost.这是我试图做的一个例子,

class object { void method(); }

{
object object_instance;
...
apply<object:: method>();
...

template<class F>
void apply() { F(object_instance); } // want to call object_instance.F()
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,所以问题是如何将对象方法绑定到对象.谢谢

上面是一个例子,而不是真正的代码.我有一堆函数只有名称不同,但有许多参数,我想在运算符中包含.

c++ methods functional-programming member

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

emacs lisp跳过语法转发帮助

我正在尝试实现移至下一个空格/空格字符的功能。我已经阅读了手册,似乎可以使用跳过语法功能。但是,我不知道如何正确使用它们。这是我所拥有的:

(skip-syntax-forward " ")
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不起作用。如果我使用“ ^”,它可以工作,但是如果point已经是一个空白字符,则点不会向前移动。

正确的用法是什么?

lisp syntax emacs

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

C++异常二进制兼容性

我的项目使用2个不同的C++编译器,g ++和nvcc(cuda编译器).我注意到从nvcc对象文件抛出的异常没有被g ++对象文件捕获.

C++异常是否应该在同一台机器上兼容二进制?什么可以导致这种行为?

try { kernel_= new cuda:: Kernel(); }
catch (...) { kernel_= NULL; }

// nvcc object
cuda:: Kernel:: Kernel () {
  ...
  if (! impl_) throw;
}
Run Code Online (Sandbox Code Playgroud)

其他一切似乎都有效(C++对象,运算符).说实话,我不太了解异常,所以上面的代码可能有错误.

c++ exception binary-compatibility

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

具有多个cpu线程的cuda设备选择

你能告诉我如果2个或更多主机线程使用cuda运行时,cuda运行时如何选择GPU设备?

运行时是否为每个线程选择单独的GPU设备?

是否需要明确设置GPU设备?

谢谢

multithreading host cuda gpu

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