クラス テンプレートがあり、特殊なインスタンスの動的に割り当てられたインスタンスへのスマート ポインターを使用する場合、クラス テンプレート全体がコンパイラーによって定義されますか、それともメンバー関数がポインターから呼び出されるのを待ちますか?インスタンス化される前ですか?
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() はインスタンス化されないということですか?