有这样的事吗?这是我第一次遇到它的实际需要,但我没有看到Stroustrup中列出的一个.我打算写:
// Detect when exactly one of A,B is equal to five.
return (A==5) ^^ (B==5);
Run Code Online (Sandbox Code Playgroud)
但是没有^^
运营商.我可以在^
这里使用bitwise 并得到正确的答案(无论机器表示真和假)?我从来没有拌&
和&&
,或|
和||
,所以我毫不犹豫地做到这一点与^
和^^
.
我会更自在地编写自己的bool XOR(bool,bool)
函数.
我在下面有一个带有运行时for
循环的C++代码段,
for(int i = 0; i < I; i++)
for (int j = 0; j < J; j++)
A( row(i,j), column(i,j) ) = f(i,j);
Run Code Online (Sandbox Code Playgroud)
该片段被重复调用.循环边界'I'和'J'在编译时是已知的(I/J是2到10的顺序).我想以某种方式使用模板展开循环.主要的瓶颈是row()和column()以及f()函数.我想用使用row<i,j>::enum
技巧在编译时评估的等效元程序替换它们.
我真正喜欢的是最终将循环解析为一系列语句的东西,例如:
A(12,37) = 0.5;
A(15,23) = 0.25;
A(14,45) = 0.25;
Run Code Online (Sandbox Code Playgroud)
但是我想这样做而不会破坏for
- for
结构太多.本着精神:
TEMPLATE_FOR<i,0,I>
TEMPLATE_FOR<j,0,J>
A( row<i,j>::value, column<i,j>::value ) = f<i,j>::value
Run Code Online (Sandbox Code Playgroud)
可以提升:: lambda(或其他东西)帮我创建吗?