我如何根据某些模板参数影响模板类方法的返回类型
How can I influence the return type of a template class method based on some template argument?
模板类应该有一个方法,该方法的返回类型基于模板参数。在此示例中,如何使函数返回int
(副本(用于K=0
和int&
(ref(用于K=1
?
template<typename T, int K>
class someclass
{
public:
someclass() : member(3) { }
T giveback() { return member; } // if K=0 should return by T, else return by T&
private:
T member;
};
int main()
{
someclass<int,0> x;
x.giveback();
}
你可以这样做:
typename std::conditional<K, T&, T>::type giveback() { return member; }
如果K
为 0,则类型将为 T
,否则为 T&
。
没有任何"没有模板专用化"之类的东西,因为std::conditional
是使用模板专用化实现的。使用 std::conditional
只是可以帮助您本地化模板专业化,而不必复制整个类的大部分内容。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 在静态库中嵌入类方法
- 如何制作一个将函数作为参数的类方法
- 从父类方法返回子类对象
- 使用用户定义的参数调用future/async并调用类方法
- 为什么擦除方法会影响结束方法
- 重载类方法的不明确调用
- 单独定义模板化嵌套类方法的正确语法
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- 如何访问由共享指针保存的类方法?
- 将子类方法声明为基类的友元
- 我的模板类方法返回错误类型?
- Qt将信号与另一个类方法连接
- 我无法使用C++指针指向类方法返回的 std::vector
- 如何在成为指向基类的指针后保留对子类方法的使用?
- 检查类方法中是否(此 == nullptr)
- 从基类实例调用派生类方法而不进行强制转换
- 函数从唯一代码调用正确的子类方法
- C++ - 如何在不静态的情况下将回调绑定到类方法?
- 我如何根据某些模板参数影响模板类方法的返回类型