Instantiation of Class-Template Member Functions
2025/9/9小于 1 分钟
Instantiation of Class-Template Member Functions
[!quote]
By default, a member function of a class template is instantiated only if the program uses that member function.
由 Blob<std::string> {} 实例化的类:
template<>
class Blob<std::basic_string<char> >
{
public:
std::basic_string<char> & back();
inline std::basic_string<char> & operator[](size_t i);
inline void pop_back();
Blob();
Blob(std::initializer_list<std::basic_string<char> > il)
: data{std::make_shared<std::vector<std::basic_string<char>, std::allocator<std::basic_string<char> > > >(il)}
{
}
private:
void check(size_t i, const std::basic_string<char> & msg) const;
std::shared_ptr<std::vector<std::basic_string<char>, std::allocator<std::basic_string<char> > > > data;
public:
// inline ~Blob() noexcept = default;
};没有使用的函数只有声明没有具体的定义。
对不使用的函数不进行实例化的好处:
[!quote]
let us instantiate a class with a type that may not meet the requirements for some of the template's operations.
可以根据模板类型调用指定函数