我想创建一个模板函数,它返回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()
方法返回单个对象/值或对象/值的标准容器。