gpt4 book ai didi

c++ - 避免使用 C++ 中的默认模板类/结构 <>

转载 作者:行者123 更新时间:2023-11-30 05:15:15 26 4
gpt4 key购买 nike

假设

template<class T>
struct S{
T x;
a(T xx){x=xx;}
};

并且我们希望通过不仅仅是希望省略空尖括号的默认特化来简化最常见的使用。可以使用 typedef

typedef S<int> defaut_S;
default_S(1);

但这里的一致性在某种程度上被打破了,因为 default_S 的名称与 S 不同,并且可能导致用户混淆。更不用说它不适用于成员函数。

有没有更好的方法来完成这个?

最佳答案

使用实例化函数模式。

template <class T>
struct S
{
T x;
void a(T xx) { x = xx; }
};

template <class T=int>
S<T> make_s() { return S<T>(); }

int main()
{
auto s = make_s();
auto t = make_s<double>();
}

关于c++ - 避免使用 C++ 中的默认模板类/结构 <>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43175566/

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