Здравствуйте, подскажите пожалуйста:
почему в данной случае тип переменных i, j известен на этапе компиляции
template <int i, int j, class T>
auto to_pair(T tuple) -> decltype(std::make_pair(std::get<i>(tuple), std::get<j>(tuple)))
{
return std::make_pair(std::get<i>(tuple), std::get<j>(tuple));
}
а здесь на этапе выполнения
template <class T>
auto to_pair(int i, int j, T tuple) -> decltype(std::make_pair(std::get<i>(tuple),
std::get<j>(tuple)))
{
return std::make_pair(std::get<i>(tuple), std::get<j>(tuple));
}
Ну или может поделитесь ссылкой, где поподробнее про это написано.
Похоже, вы путаете тип и значение.
Типы i и j известны во время компиляции - это int.
А вот значения во второй функции действительно могут быть известны только во время выполнения. Поэтому этот шаблон и не работает - get требуется знать значение индекса во время компиляции.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей