相关疑难解决方法(0)

如何获取基类的模板类型

C++标准或C++标准库中的内容将实现get_base_template_arg<>本示例中的操作?

template <typename TResponse>
class request {};

class request1 : public request<int> {};

class mediator {
 public:
  template <typename TRequest, typename TResponse
     = get_base_template_arg<TRequest>::type>
  TResponse send(TRequest r) { /* ... */ }
};
Run Code Online (Sandbox Code Playgroud)

这样我就可以做到:

mediator m{};
request1 r{};
int x = m.send(r);
Run Code Online (Sandbox Code Playgroud)

编辑: 谢谢Brian的回答; 完整的解决方案可能如下所示:

template <typename TResponse>
class request {
 public:
  using response_type = TResponse;
};

class request1 : public request<int> {};

class mediator {
 public:
  template<typename TRequest,
    typename TResponse = typename TRequest::response_type>

  TResponse send(const …
Run Code Online (Sandbox Code Playgroud)

c++ templates template-meta-programming

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

标签 统计

c++ ×1

template-meta-programming ×1

templates ×1