小编fac*_*tus的帖子

如何告诉VC++优化器不要合并函数体?

请考虑以下代码:

#include <iostream>

struct A {};

struct B {};

int func1(A *a, B *b, int c, double *d) {
    int tmp = 0;
    tmp = tmp;

    return 1;
}

int func2(A *a, B *b, int c, double *d) {
    return 1;
}

int main(int argc, char* argv[]) {
    if (func1 == func2) {
        std::cout << "equal" << std::endl;
    } else {
        std::cout << "not equal" << std::endl;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在VS2013中的Release配置中编译时,它打印出"相等".我有一个库,它依赖于函数地址的比较.您可以想象它在Release中不起作用.有没有办法阻止VC++中的这种优化?或者我应该提交错误?

c++ visual-studio-2013

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

如何更改参数包中的最后一个参数?

我有一个功能 f1()

template <typename... Args>
void f1(Args... args)
{
    // the implementation is just an example, I don't really need a complicated
    // way to sum numbers
    boost::fusion::vector<Args...> v(args...);
    std::cout << boost::fusion::accumulate(v, 0, [](auto i1, auto i2) { return i1 + i2; }) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我想从函数中调用它f2(),但是使用不同的最后一个参数.有一个简单的方法吗?我尝试了一个天真的

template <typename... Args>
struct CallHelper;

template <>
struct CallHelper<>
{
    template <typename... Args>
    static void Apply(Args... args) { f1(args...); }
};

template <typename A0>
struct CallHelper<A0>
{
    template <typename... Args>
    static …
Run Code Online (Sandbox Code Playgroud)

c++ templates variadic-templates generic-lambda c++14

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

正确解析JavaScript八进制转义序列

根据ECMA规范,八进制转义序列定义为

OctalEscapeSequence ::  
    OctalDigit [lookahead ? DecimalDigit]  
    ZeroToThree OctalDigit [lookahead ? DecimalDigit]  
    FourToSeven OctalDigit  
    ZeroToThree OctalDigit OctalDigit  

ZeroToThree :: one of
    0 1 2 3

FourToSeven :: one of
    4 5 6 7
Run Code Online (Sandbox Code Playgroud)

根据这个规范,字符串"\379"不是八进制转义\37后跟9.我看对了吗?它不满足第一个规则,因为7是十进制数字.它不满足第二个,因为9是十进制数字.它不满足第三个,因为三个不是其中之一4 5 6 7.最后,它不满足第四个,因为9不是八进制数字.

那么当时的价值是"\379"什么?我尝试了JavaScript的翻译人员,他们将它解释为一个八进制转义\37之后9.这是口译员的错误吗?

UPDATE

我知道八进制转义序列在最新的ECMA规范中是可选的.

javascript

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