gpt4 book ai didi

c++ - 如何根据某些模板参数影响模板类方法的返回类型?

转载 作者:搜寻专家 更新时间:2023-10-31 00:09:29 24 4
gpt4 key购买 nike

模板类应该有一个返回类型基于模板参数的方法。在此示例中,如何使函数为 K=0 返回 int(拷贝)并为 返回 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++ - 如何根据某些模板参数影响模板类方法的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43010067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com