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)