我想创建一个模板函数,该函数返回int
或std::vector<int>
,具体取决于模板参数。例如:如何根据模板参数返回不同类型
struct ReturnInt {};
struct ReturnVec {};
[...]
int num = func<ReturnInt>();
std::vector<int> nums = func<ReturnVec>();
我一直试图天真地实施这个基础上,我的经验非常有限的TMP。我觉得它应该包含一些沿着显式模板专业化,std::enable_if
,std::conditional
和/或SFINAE的行。但是我的编码尝试都不会编译,更不用说在简单的测试中运行了。
这种返回式切换如何实现?
编辑:正如在评论中指出的,这是我的实际问题的简化。如果有帮助,我有一个接受模板参数的类。根据参数,我希望它的get()
方法返回单个对象/值或对象/值的标准容器。
为什么功能需要被命名为相同的,如果他们不义性的基于参数之类的东西?将模板专业化视为名称的一部分似乎没有必要。 –
这是我的实际问题的简化。如果有帮助,我有一个接受模板参数的类。根据参数,我希望它的'get()'方法返回单个对象/值或标准的对象/值容器。 –
你看过模板专业吗? –