gpt4 book ai didi

c++ - 无法在 C++ Actor Framework 中声明模板类型的 actor

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:38 25 4
gpt4 key购买 nike

我正在尝试在 C++ actor framework (CAF) 中声明一个强类型的 actor ,但由于某种原因我的代码无法编译。你能告诉我它有什么问题吗?

#include "caf/all.hpp"

template <typename TNum>
class DiscoverRequest {};

template <typename TNum>
class DiscoverResponse {};

template <typename TNum>
class DataRequest {};

template <typename TNum>
class DataResponse {};

template <typename TNum>
using BlockActor = caf::typed_actor<
/* ERROR NEXT LINE */
caf::replies_to<DiscoverRequest<TNum>>::with<DiscoverResponse<TNum>>,
caf::replies_to<DataRequest<TNum>> ::with<DataResponse<TNum>> >;

错误信息:

Block.hh:13:71: error: type/value mismatch at argument 1 in template
parameter list for 'template<class ... Sigs> class caf::typed_actor'

caf::replies_to<DiscoverRequest<TNum>>::with<DiscoverResponse<TNum>>,
^
Block.hh:13:71: error: expected a type, got
'(caf::replies_to<DiscoverRequest<TNum> >::with < <expression error>)'

但是如果我替换 DiscoverRequest<TNum>DiscoverResponse<TNum>具有特定的实例化,例如 DiscoverRequest<float> ,它确实编译得很好。所以,我认为 CAF 内部的某些东西禁止使用这样的结构。

我的编译器是 GCC G++ 4.9.2(当然还有 -std=c++11),在 Fedora 21 上运行。CAF 是 latest revision它的 master分支,作为 Git 子模块链接到项目。

最佳答案

template 关键字丢失。

应该是

template <typename TNum>
using BlockActor = caf::typed_actor<
typename caf::replies_to<DiscoverRequest<TNum>>::template with<DiscoverResponse<TNum>>,
typename caf::replies_to<DataRequest<TNum>> ::template with<DataResponse<TNum>> >;

关于c++ - 无法在 C++ Actor Framework 中声明模板类型的 actor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30070267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com