明示的なインスタンス化宣言は、後続の暗黙的なインスタンス化を抑制することを知っています。しかし、明示的なインスタンス化の定義しかない場合はどうなるでしょうか? 次の暗黙的なインスタンス化も抑制しますか?
例えば:
#include <vector>
template class std::vector<int>; // Explicit template instantiation definition.
int main() {
std::vector<int> a; // Implicit instantiation.
}
明示的なテンプレートのインスタンス化定義は、その後の暗黙的なインスタンス化を抑制しますか? extern
キーワードを先頭に追加して明示的な定義を宣言にすると、暗黙的なインスタンス化が抑制されることがわかっています。