小编Gea*_*phy的帖子

在C++ 11类型推断期间,有哪些规则可以控制优先级?

有关浮点/双精度类型的C++ 11类型推断中的优先级的规则是什么,例如,从包含多个类型的表达式推断时,如下所示:

auto var = float(1) * double(1);
Run Code Online (Sandbox Code Playgroud)

c++ type-inference c++11

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

用于网络协议设计的异步单线程与同步多线程?

我们的团队正在实施一种安全的多层对等协议,该协议使用Boost/C++在多个中间"跳"之间建立节点之间的连接.

我们目前陷入了关于如何实现协议设计的争论,即作为异步单线程或同步多线程架构.

我不想通过列举利弊来偏袒这个问题,但我对StackOverFlow社区在这些问题上的经验以及他们喜欢哪种方法非常感兴趣?

我意识到这是一个悬而未决的问题,所以理想情况下答案不是基于轶事证据,而是来自某些经验或分析基础.

c++ multithreading boost asynchronous network-programming

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

限制在C++中内联函数包装器

我的问题涉及在C++中对函数包装器应用内联优化,考虑以下代码,WorkerStructure对象使用封装了一些功能的函数包装器进行初始化.然后在调用WorkerStructure :: doSomeWork方法时使用函数包装器.

将workerFunction对象封装的功能在应用于WorkerStructure :: doSomeWork方法时会被内联吗?显然,如果在某个其他转换单元中定义了该功能,则workerFunction对象只封装一个函数指针,是否有任何其他情况需要内联不可能吗?

当通过函数包装器传递在不同转换单元中定义的lambda函数时,它是否实际上等效于传递函数指针?

struct WorkerStructure
{
    WorkerStructure(std::function <bool(float)> &f):workerFunction(f) {}

    void doSomeWork(float inputValue)
    {
        if(workerFunction(inputValue))
        {
            //do some conditional operation
        }
    }
    std::function <bool(float)> workerFunction ;
};
Run Code Online (Sandbox Code Playgroud)

c++ optimization inlining c++11

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

Python使用与False相同的值来计算整数和字符的比较

今天晚上我遇到了这个有趣的小"问题",请考虑以下代码片段:

(chr(1)== 1)

这个比较在Python 2.7.4上评估为False,这是一个功能还是一个bug?如果有一个功能,任何人都可以解释这个设计决策背后的原因吗?

python integer character comparison-operators

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

g ++和Visual Studio中方法指针转换规则之间的差异

struct Test
{
    typedef unsigned (Test::*MethodPtr)();
    unsigned testMethod() {}
};
typedef void (*ThreadPtr)(void *);
ThreadPtr threadPtr = reinterpret_cast<ThreadPtr>(&Test::testMethod);
Run Code Online (Sandbox Code Playgroud)

我想将一个线程发送到特定对象的类方法中.我使用方法指针作为线程入口点,并将对象指针作为唯一参数传递.这可行,因为我的结构中没有任何虚拟声明.

我的问题与reinterpret_cast操作有关.g ++允许这样,Visual Studio 2008则不然.我通过将方法指针值直接memcp到threadPtr变量来解决VS2008的限制.生成的代码工作正常但是这应该是一个简单的操作是一个非常可怕的解决方法.谁能提供更优雅的替代品?

谢谢

-G

编辑:

为了澄清,gcc给出的警告如下:

methodPtrTest.cpp:14: warning: converting from ‘void (Test::*)()’ to ‘void (*)(void*)’
Run Code Online (Sandbox Code Playgroud)

c++ methods pointers g++ visual-studio-2008

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