我在stackoverflow上搜索了一段时间,但是我不明白模板足以找到解决方案,或者它根本没有被回答过。要求函数模板的返回类型是模板的专门化
在这个例子中:
template <typename T> T f();
是否有可能使功能需要类型T是std::basic_string
模板的一个特例?
我可以将模板和T定义为std::basic_string
的类型,所以(使用std::basic_string<T>
内部,当然):
template <typename T> std::basic_string<T> f();
但我不能够通过std::string
或std::wstring
到函数(期望返回类型分别为std::string
和std::wstring
),这是这里的真正目标(能够传递来自std::basic_string
模板的任何类型)。
@ splash请指出您是指“派生自”还是“专业化”。在你原来的帖子中你说过“源自”。 Potatoswatter将其标题改为“专业化”,但只留下了主要内容。你的真实意图是什么?请修复你的问题。你最后一段对我来说就像“我不能传递std :: string,因为它看起来像'std :: basic_string'。”。它不一定跟随你的正文,你的意思是什么。 –
2010-09-17 11:01:16
如果我理解术语,我会用'专业化'。你甚至可以从模板类派生吗? – komiga 2010-09-17 12:00:53
@ splash谢谢,现在很清楚。同理,我会解释“derived from basic_string”,因为这个类来自'basic_string'。所以从某种意义上说,它是不明确的:) –
2010-09-17 12:09:53