它是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) 我使用gcc-4.7.0的svn版本来查看一些C++ 11的功能,例如Lambda Expressions.几个星期后,我的一些旧例子包括Lambdas不再编译了.我想知道:
有问题的代码似乎涉及直接作为参数提供的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) 我按照说明在我的页面中添加了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)
当我按下该按钮时,视频环聊开始(告诉我我应该启用视频).我也不确定我是否有正确的环聊被邀请者,但我会稍后再说.
如何让按钮上的仅聊天窗口打开?
有没有办法用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() = {
}
我是否正确阅读来自min和max(以及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更适合这项任务.
我的解释是否正确?
我试图按照Bjarne Stroustups对function模板的解释.我特别使用了c-function-pointers,functors,lambdas和member-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) 前段时间我被告知,实现两元运营商的通常模式需要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实现上述模式吗?
特别是即将推出的Windows 8(带有Metro)将要求任何IO都是异步编程的.在C#/ .Net中,似乎有特殊的await和类似的构造,JavaScript API将有自己的机制来实现它.
那个C++ 11集成是什么?现代(或即将推出)Windows的简洁示例(例如,从文件中读取图像以进行显示?)?如果它正在使用C++ 11的功能,我会期待async或future涉及?
我通过n1429阅读了该部分
算法regex_match和regex_search都支持正则表达式库中不常见的功能:部分匹配.当在
std::regex_constants::match_partial传递给算法的标志中设置标志时,如果匹配了一个或多个字符,则可以返回true的结果,然后状态机到达字符序列的末尾,同时仍然存在要匹配的状态.[...]
但我在FCD中找不到该功能的任何痕迹,也找不到当前gcc-4.7.0的标题.我也找了n1429的修订版,但又没找到任何东西.我知道该提案的基础是它起源于Boost并使其成为TR1.但我不知道什么时候match_partial消失了.
是部分匹配功能仍然在C++ 11?也许用不同的名字?
当我写一堂课 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)