小编sle*_*eur的帖子

提升 MSM 编译速度

我试图通过使用 boost MSM 状态机的显式模板实例化来减少项目的编译时间。但是,每当我添加显式模板实例化时,我的项目都不会编译。

您可以使用此处文档中的示例找到问题的示例:http://coliru.stacked-crooked.com/a/9850cae23afdada2。(这是一个人为的示例,因为只有一个翻译单元,但错误与我在项目中使用显式模板实例化时的错误相同。)

有谁知道如何解决这些编译错误?

/usr/local/include/boost/msm/back/state_machine.hpp: In instantiation of 'boost::msm::back::state_machine<A0, A1, A2, A3, A4>::deferred_events_queue_t& boost::msm::back::state_machine<A0, A1, A2, A3, A4>::get_deferred_queue() [with A0 = player_; A1 = boost::parameter::void_; A2 = boost::parameter::void_; A3 = boost::parameter::void_; A4 = boost::parameter::void_; boost::msm::back::state_machine<A0, A1, A2, A3, A4>::deferred_events_queue_t = std::deque<std::pair<boost::function<boost::msm::back::HandledEnum()>, bool>, std::allocator<std::pair<boost::function<boost::msm::back::HandledEnum()>, bool> > >]':
main.cpp:271:27:   required from here
/usr/local/include/boost/msm/back/state_machine.hpp:1346:40: error: 'struct boost::msm::back::state_machine<player_>::deferred_msg_queue_helper<boost::msm::back::state_machine<player_>, int>' has no member named 'm_deferred_events_queue'
         return m_deferred_events_queue.m_deferred_events_queue;
                ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
...
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-msm

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

nullptr_t未在g ++ 4.9.2上定义

我正在使用C++ Rest SDK在Linux上的一个项目中使用g ++ 4.9.2与-std = c ++ 11标志设置.

Internaly C++ Rest SDK检查nullptr是否存在:

#if defined nullptr_t
#define NEEDS_NULLPTR_DEFINED 0
#else
#define NEEDS_NULLPTR_DEFINED 1
#endif
#if NEEDS_NULLPTR_DEFINED
#define nullptr NULL
#endif
Run Code Online (Sandbox Code Playgroud)

这个检查在我的机器上失败,导致nullptr被定义为NULL,后来打破了编译.我不太确定g ++或C++ Rest SDK是否应该归咎于这个问题.

你有没有想过为什么这个nullptr_t检查失败了g ++ 4.9.2以及如何修复它?

编辑:

我向C++ REST SDK提交了一个问题:https://casablanca.codeplex.com/workitem/340

c++ g++ c++11

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

标签 统计

c++ ×2

boost ×1

boost-msm ×1

c++11 ×1

g++ ×1