Недавно я узнал о нетиповых ссылочных параметрах, таких как template<auto& t>
.Затем я обнаружил, что t
может быть изменено во время выполнения:
#include <iostream>
template<auto& N>
struct X{
int operator()() { return N; }
};
int a = 2;
int main()
{
std::cin >> a; //stdin: 5
auto temp = X<a>();
std::cout << temp() << '\n';
}
Выходные данные 5
, а не 2
.Означает ли это, что temp
создается во время выполнения?
Я постараюсь ответить на свой вопрос.Если что-то не так, пожалуйста, поправьте меня, спасибо!Другие ответы также приветствуются!