【发布时间】:2017-12-06 09:54:59
【问题描述】:
假设我有一个这样的模板类:
template<typename TRequest, typename TResponse = void>
class handler
{
private:
TResponse process_core(const TRequest& request);
public:
TResponse process(const TRequest& request)
{
//log the request
TResponse response = process_core(request); //return process_core(request) works;
//log the response, for void it's fine to log nothing
return response;
}
};
项目process_core 的其他地方针对不同的 TRequest/TResponse 类型实现。例如:
template<> void handler<Foo>::process_core(const Foo& foo) { }
template<> Baz handler<Bar, Baz>::process_core(const Bar& bar) { }
显然return response 会中断void 类型。这样做的正确方法是什么?还是我的设计不是 C++ 方式?我是 C++ 新手。
【问题讨论】:
标签: c++ templates template-classes