我有以下模板类。
template<typename T, typename R = void>
class Event
{
public:
typedef boost::signals2::signal<R (const T&)> signal_t;
virtual R fire(const T& argument)
{
return static_cast<R>(*signal_(argument));
}
private:
signal_t signal_;
...
};
由于 R 可以是无效的,我在线得到一个无效的间接编译错误
return static_cast<R>(*signal_(argument));
它似乎无法通过运行时检查来解决,因为它是一个模板类。不能返回“类型”无效。我该如何解决这个问题?