如果我有一个类模板,并且我使用指向专用实例的动态分配实例的智能指针,这是否会导致整个类模板由编译器定义,或者它是否还会等待从指针调用成员函数在实例化之前?
template <class T>
class Test {
public:
void nothing();
void operation();
static const int value;
};
template <class T>
const int Test<T>::value = 100;
template <class T>
void Test<T>::nothing() {
/* invalid code */
int n = 2.5f;
}
template <class T>
void Test<T>::operation() {
double x = 2.5 * value;
}
int main() {
std::unique_ptr<Test<int>> ptr = new Test<int>(); // mark1
ptr->operation(); // mark2
return 0;
}
整个类模板是否在 mark1 处实例化?
如果不是,这是否意味着此代码将正确编译并且成员函数 Test::nothing() 不会被实例化?