小编Chr*_*ris的帖子

复制boost :: function是否也复制了闭包?

说我有这样的功能:

void someFunction(const ExpensiveObjectToCopy&);
Run Code Online (Sandbox Code Playgroud)

如果我将boost :: function输出,那么该函数将在其闭包中存储自己的克隆副本:

boost::function<void()> f = boost::bind(someFunction, x);  // <-- f saves a copy of x
Run Code Online (Sandbox Code Playgroud)

现在,如果我开始传递f,boost :: function复制构造函数每次都会复制该对象,还是每个函数共享相同的闭包?(就像这样)

boost::function<void()> f2 = f;
callSomeFunction(f);
etc.
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-bind boost-function

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

通过ajax流式传输数据

我想在请求完成之前访问AJAX数据,有效实现这样的流式:

ajax_request.send();
interval = setInterval(function() {
    continueParsing(ajax_request.responseText);
    if (download_complete)
        clearInterval(interval);
}, 64);
Run Code Online (Sandbox Code Playgroud)

现在我有一个PHP的东西将请求分解成更小的块,但我宁愿一气呵成.最好的方法是什么(我只关心Chrome和Firefox).

javascript ajax streaming

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

Eclipse CDT代码分析认为size_t是模糊的

毕竟,它确实在stddef.h和c ++ config.h中定义:

C++的config.h:

namespace std
{
  typedef __SIZE_TYPE__     size_t;
  typedef __PTRDIFF_TYPE__  ptrdiff_t;

#ifdef __GXX_EXPERIMENTAL_CXX0X__
  typedef decltype(nullptr) nullptr_t;
#endif
}
Run Code Online (Sandbox Code Playgroud)

STDDEF.H:

typedef __SIZE_TYPE__ size_t;
Run Code Online (Sandbox Code Playgroud)

因此,当文件执行时using namespace std,Eclipse CDT代码分析会混淆并说符号不明确.我不知道gcc是如何解决这个问题的,但是对于日食代码分析有什么建议吗?

eclipse-cdt

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

std :: map:插入后可以复制和移动密钥吗?

换句话说,将指针存储到地图中的键是否安全?或者地图是否可以在其生命周期内复制和移动密钥,从而使现有指针无效?

文档说:"迭代器有效性:没有变化." 这是否意味着我的问题的答案是"不,他们不能被复制或移动"?

c++ dictionary stl std

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

开罗掩蔽 - 我缺少什么吗?

所以我试图在开罗设置一个面具,但无法让它发挥任何作用。下面我有一个基于此处的简单程序:http://snipplr.com/view/22584/cairo-hello-world-examble/

我正在设置一个完全透明的蒙版,因此不应绘制任何内容,但它似乎没有任何效果 - 文本仍然会被绘制。我的代码如下。我缺少什么?

谢谢!

int main(int argc, char* argv[])
{                               
    cairo_surface_t* surface;     
    cairo_t* cr;                  

    surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 200, 40);
    cr = cairo_create (surface);

    //****
    // Here I create a pattern with an alpha of zero and set it to be cairo's mask
    // According to http://www.cairographics.org/manual/cairo-context.html#cairo-mask
    // "Opaque areas of pattern are painted with the source, transparent areas are not painted."
    // Shouldn't this make it so nothing gets drawn?
    //****

    cairo_pattern_t* nothing = cairo_pattern_create_rgba(0,0,0,0);
    cairo_mask …
Run Code Online (Sandbox Code Playgroud)

vector-graphics masking cairo

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

C ++-在X窗口中更改光标

我以为这很容易找到,但是Google搜索一直无济于事。有没有简单的api来更改X窗口中的鼠标光标?(我知道在Windows中您可以仅调用“ SetCursor”)

c++ linux x11 mouse-cursor

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

将具有用户定义的构造函数的类填充到并集中

class Foo {
    Foo(int val) { /* Do some initialization */ }
    Foo() { /* Do nothing */ }
};
union Bar {
    Foo foo;
};
Run Code Online (Sandbox Code Playgroud)

该代码生成此错误:

错误C2620:union'Bar'的成员'Bar :: foo'具有用户定义的构造函数或非平凡的默认构造函数

我明白为什么如果构造函数实际执行某些操作会抛出该错误,但这里的构造函数不带参数而什么也不做.有什么办法可以把这个班级变成一个联盟吗?我不得不一直采取行动,char foo[sizeof(Foo)]并希望有一个更清洁的解决方案.

c++ constructor unions

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

C++模板:计算值并在编译时做出决策

假设您有一个具有模板长度和类型的矢量类 - 即vec<2,float>.这些也可以嵌套 - vec<2,vec<2,vec<2,float> > >或者vec<2,vec<2,float> >.您可以计算嵌套其中一个向量的深度如下:

template<typename T>
inline int depth(const T& t) { return 0; }
template<int N, typename T>
inline int depth(const vec<N,T>& v) { return 1+depth(v[0]); }
Run Code Online (Sandbox Code Playgroud)

麻烦的是你不知道它在运行时有多深,但你可能需要知道在comile-time的深度才能做到这样的事情:

// Do this one when depth(v1) > depth(v2)
template<int N, typename T, int M, typename U>
inline vec<N,T> operator +(const vec<N,T>& v1, const vec<M,U>& v2) {
    return v1 + coerce(v2,v1);
}
// Do this one when depth(v1) < depth(v2)
template<int N, typename …
Run Code Online (Sandbox Code Playgroud)

c++ templates

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

如何更少地接管控制台?

我想以更少的方式接管控制台,以制作更具互动性的应用程序.看起来他们可以完全控制在哪里绘制.我怎样才能做到这一点?

c++ terminal console printf cout

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