C++模板"延迟实例化"

Ton*_*ion 7 c++ templates

C++模板中的"延迟实例化"是什么意思?

sha*_*oth 9

延迟实例化是指模板未实例化,直到第一次使用相应的实体.例如,您有一个模板化的函数:

template<int Size>
void YourFunction()
{
    //does something
}
Run Code Online (Sandbox Code Playgroud)

参数Size可以具有任何可能的值int.您是否自动为所有可能的值实例化了模板化函数Size?不,模板仅实例化为函数调用首次出现在代码中时实际用作参数的值:

YourFunction<100>(); //instantiated for 100
Run Code Online (Sandbox Code Playgroud)