C ++模板专业化实施

时间:2016-08-26 14:59:54

标签: templates c++11 typetraits

我正在尝试编写一个小型库,我需要强制执行特定的模板专业化。假设我有一个带有两个模板参数的抽象类analyze-string。我还有另一个(抽象)类,它由Abstract<S,T>参数化,如Abstract<S,T>中所示。我想定义Other<U, V, Abstract<S,T>>,以便另一个virtual void Other<U, V, Abstract<S,T>>::operator()(U, V, Abstract<S,T>&) = 0;(具体)类可以Another<S,T,U> : public Other<S,T,U> override来引用抽象对象。这样,我就可以创建新类型,可以使用它在operator()中收到的任何Concrete<S,T> : public Abstract<S,T>对象的继承机制。

我不是一个优秀的软件架构师。下面是我认为可以强制实施上述机制的小代码摘录。我已经在不同的论坛上阅读了这个问题,并且已经意识到这可以使用operator() type_traits来解决(也许是SFINAE类型的解决方案,我不知道)。< / p>

如果您能告诉我如何实施这样的机制,我将不胜感激。或者,更好的是,如果需要,我的问题的另一种方法(即,不同的设计模式解决方案)。

C++11

以上解决方案提供了一种强制执行我想要的机制;但是,编译器无法向最终用户提供信息性错误消息。我想有这么好的错误机制。如果您指出与上述解决方案相关的可能缺陷/问题,我将不胜感激。

0 个答案:

没有答案