В g++ можно указать списки уничтожения для asm, например:
asm ("somecode" : : "r1", "r2", "r3");
что означает, что ассемблерный код меняет регистры r1, r2, r3.
Теперь мои измененные регистры зависят от параметра шаблона n
(блок asm
находится внутри шаблонной функции), а регистры r1, ..., rn будут изменены. Как я могу это выразить?