Реализацию шаблонных методов / функций нельзя выносить в отдельный translation unit
template <typename T>
class Q
{
T t;
void f(T);
};
#include "q.h"
template <typename T> void Q<T>::f(T v)
{
t += v;
}
template class Q<int>;
$ g++ q.cpp -g -c -o q.o
$ objdump --demangle -d q.o
q.o: file format elf64-x86-64
Disassembly of section .text._ZN1QIiE1fEi:
0000000000000000 <Q<int>::f(int)>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
8: 89 75 f4 mov %esi,-0xc(%rbp)
b: 48 8b 45 f8 mov -0x8(%rbp),%rax
f: 8b 00 mov (%rax),%eax
11: 89 c2 mov %eax,%edx
13: 03 55 f4 add -0xc(%rbp),%edx
16: 48 8b 45 f8 mov -0x8(%rbp),%rax
1a: 89 10 mov %edx,(%rax)
1c: 5d pop %rbp
1d: c3 retq
у других topic станет невалидным
Простите, что вы имели в виду?
Вообще-то именно для этого. А до KVM для этого использовали KQEMU.
Вот с XEN QEMU был интегрирован в первую очередь для поддержки полной виртуализации для гостевых систем, которые нельзя модифицировать. QEMU при этом предоставляет гостевой системе стандартные модели периферийных устройств.