小编tow*_*owi的帖子

C++ 0x:thread,gcc还是我的错误?

它是GCC 4.7.0还是我?我做错了什么?

这会引发std::system_error "不允许操作"的异常:

struct DumbFib {
    size_t operator()(size_t n) { return fib(n); }
    static size_t fib(size_t n) {
        return n<2 ? 1 : fib(n-2)+fib(n-1);
    }
};

void sample() {
    DumbFib dumbfib;
    thread th{ dumbfib, 35 };    // <- system_error!
    th.join();
};
Run Code Online (Sandbox Code Playgroud)

虽然这有效:

void work(size_t loop) {
    for(int l = loop; l>0; --l) {
        for(int i = 1000*1000; i>0; --i)
            ;
        cerr << l << "...";
    }
    cerr << endl;
}

int main() {
    //sample();
    thread t …
Run Code Online (Sandbox Code Playgroud)

multithreading gcc4 c++11

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

Lambda语法或gcc bug的最后一刻更改?

我使用gcc-4.7.0的svn版本来查看一些C++ 11的功能,例如Lambda Expressions.几个星期后,我的一些旧例子包括Lambdas不再编译了.我想知道:

  • 我是否错过了在过去几周内在gcc-4.7.0中实现的C++ 11-Lambda规范的最后一刻更改?
  • 这是gcc中的一个bug,它不再识别内联Lambda了吗?
  • 或者我是否误解了Lambda语法的其他内容?

有问题的代码似乎涉及直接作为参数提供的inline-Lambdas.

你会说下面的代码是正确的C++ 11代码吗?

#include <thread>
using namespace std;

struct Image {}; // dummy

void fill(int color, const Image& image) {
} // dummy

int main() {
    int red;
    Image img;
    thread th{
        [&img](int c){ fill(c, img); },  // error?
      red };
    th.join();
}
Run Code Online (Sandbox Code Playgroud)

如果我更改它并首先将Lambda分配给变量,它的工作原理如下:

#include <thread>
using namespace std;

struct Image {}; // dummy
void fill(int color, const Image& image) {
} // dummy

int main() {
    int red;
    Image img; …
Run Code Online (Sandbox Code Playgroud)

c++ lambda gcc c++11

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

如何为仅限聊天创建Google环聊按钮?

我按照说明在我的页面中添加了Google环聊按钮:

<script src="https://apis.google.com/js/platform.js" async defer>
</script>
<g:hangout
   render="createhangout"
   topic="cpp11"
   hangout_type="moderated"
   invites="[{ id : '74838920', invite_type : 'PROFILE' },
       { id : 'my.email@gmail.com', invite_type : 'EMAIL' }]">
</g:hangout>
Run Code Online (Sandbox Code Playgroud)

当我按下该按钮时,视频环聊开始(告诉我我应该启用视频).我也不确定我是否有正确的环聊被邀请者,但我会稍后再说.

如何让按钮上的仅聊天窗口打开?

google-api hangout

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

Scala中的参数化单元测试(使用JUnit4)

有没有办法用Scala实现参数化单元测试?目前我在其余的程序中使用JUnit4,我想继续只使用"标准"API.

我找到了一个使用Groovy的Junit4的例子,但我在定义static部件时遇到了问题.可能是因为我对Scala也很新:-)

我现在和以前一样迷人

import org.junit.Test
import org.junit.Assert._

import org.junit.runner.RunWith
import org.junit.runners.Parameterized
import org.junit.runners.Parameterized.Parameters

@RunWith(classOf[Parameterized])
class MyTest extends junit.framework.TestCase {

    @Parameters object data {
        ...
    }

    @Parameter ...

    @Test
    def testFunction() = {
    }

junit unit-testing scala junit4

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

C++ 11中的min和max Variadic模板变体?

我是否正确阅读来自minmax(以及minmax此类)的标准有新的initializer_list变体,但没有Variadic模板变体?

这样就可以了:

int a = min( { 1,2,a,b,5 } );
Run Code Online (Sandbox Code Playgroud)

但这不是:

int b = min( 1,2,a,b,5 ); // err!
Run Code Online (Sandbox Code Playgroud)

我想,很多人都希望Variadic模板可以很容易地实现这一点,因此他们可能会感到失望.

我会说使用VT min并且max会有点矫枉过正

  • 可变参数模板能够处理多种类型
  • 初始化列表检查所有类型是否相同

因此IL更适合这项任务.

我的解释是否正确?

c++ initializer-list stl-algorithm variadic-templates c++11

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

C++ 0x函数<>,绑定和成员

我试图按照Bjarne Stroustupsfunction模板的解释.我特别使用了c-function-pointers,functors,lambdasmember-function-pointers的可互换性

鉴于这些定义:

struct IntDiv { // functor
  float operator()(int x, int y) const
    { return ((float)x)/y; }
};

// function pointer
float cfunc(int x, int y) { return (float)x+y; }

struct X { // member function
  float mem(int x, int y) const { return ...; }
};
using namespace placeholders; // _1, _2, ...
Run Code Online (Sandbox Code Playgroud)

我想分配function<float(int,int)>一切可能:

int main() {
  // declare function object
  function<float (int x, …
Run Code Online (Sandbox Code Playgroud)

functional-programming bind member-function-pointers c++11

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

C++ 0x T运算符+(const T&,T &&)模式,还需要移动吗?

前段时间我被告知,实现两元运营商的通常模式需要move在回报中获得最终结果.

Matrix operator+(const Matrix &a, Matrix &&b) {
    b += a;
    return std::move(b);
}
Run Code Online (Sandbox Code Playgroud)

但是现在有一个特殊的规则,在return编译器中可以将返回值视为临时值,然后这不是必需的 - 一个简单的return b就足够了.

但是,再一次,在这个函数中b有一个名字,因此,它是一个LValue - 这阻碍了编译器认为它是一个临时值,而且move是必需的.

在最新版本的C++ 0x标准中,情况仍然如此吗?我们需要move实现上述模式吗?

operator-overloading rvalue-reference c++11

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

将C++ 11异步/期货与Windows异步IO相结合的最佳API是什么?

特别是即将推出的Windows 8(带有Metro)将要求任何IO都是异步编程的.在C#/ .Net中,似乎有特殊的await和类似的构造,JavaScript API将有自己的机制来实现它.

那个C++ 11集成是什么?现代(或即将推出)Windows的简洁示例(例如,从文件中读取图像以进行显示?)?如果它正在使用C++ 11的功能,我会期待asyncfuture涉及?

c++ windows asynchronous windows-8 c++11

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

C++ 11正则表达式中是否有match_partial?

我通过n1429阅读了该部分

算法regex_match和regex_search都支持正则表达式库中不常见的功能:部分匹配.当在std::regex_constants::match_partial传递给算法的标志中设置标志时,如果匹配了一个或多个字符,则可以返回true的结果,然后状态机到达字符序列的末尾,同时仍然存在要匹配的状态.[...]

但我在FCD中找不到该功能的任何痕迹,也找不到当前gcc-4.7.0的标题.我也找了n1429的修订版,但又没找到任何东西.我知道该提案的基础是它起源于Boost并使其成为TR1.但我不知道什么时候match_partial消失了.

部分匹配功能仍然在C++ 11?也许用不同的名字?

c++ regex boost tr1 c++11

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

编译器生成的默认构造函数是公共的吗?

当我写一堂课 Widget.java

public class Widget {
    int data;
    String name;
}
Run Code Online (Sandbox Code Playgroud)

编译器生成的构造函数是公共的还是默认的

公众会是这样的

public class Widget {
    int data;
    String name;
    public Widget() {}
}
Run Code Online (Sandbox Code Playgroud)

而默认类似于

public class Widget {
    int data;
    String name;
    Widget() {}
}
Run Code Online (Sandbox Code Playgroud)

java default-constructor compiler-generated member-access

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