запихнуть функцию с шаблонным параметром в цикл for, значение которого будет == константе под индексом?
Я хочу сделать так:
int array[20] = { ... };
for (size_t i = 0; i < n; i++) {
func<array[i]>()
}
Есть ли какой-то вариант?
Я ещё только учу массивы, но сразу вижу ошибку Не стоит называть массив, как array, так как это является ключевым словом
ключевое слово std::array<T, n>, если что. Шаблонный класс просто по имени отсутствует в коде
А чтобы array не являлся ключевым словом, не нужно использовать using namespace std;
std::vector<smth> vector кмк вполне нормально. те кто юзает namespace std- как раз нет
но да, лучше не использовать array всё таки.
Ну, обычно используют using namespace std, поэтому да
да даже с ним надо указать параметры шаблона, типа std::array просто как такового нет
Знает кто решение?
Пока учусь, это экономит мне время в написании кода и сам код читабельнее и меньше
код читабельнее при std::cout std::cin, такое бросается в глаза и видишь ввод/вывод. вот насчет using std::string это уже получше
Ну, пока что буду использовать Иду по урокам симпл кода
Нет такого варианта нет аргументом шаблона может быть либо тип, либо Константа времени компиляции
Решения не существует
Я вроде помню, что templat'ы полные по тьюрингу, и думал что можно указать компилятору, чтобы он заинлайнил
Тоже учусь, такой вопрос при использование в структуре using namespace std; на вывод cout компилятор выдавал ошибку, а при удалении using namespace и использование std::cout этой ошибки уже не было. С чем это может быть связано?
С чем угодно. Пока люди телепатии не научились и никто не знает, что ты там писал или не писал.
Штатный экстрасенс в отпуске. Ошибку в студию
может быть связано с твоим кодом, который ты не прислал
А вот и ответ на мой вопрос: https://godbolt.org/z/cTq6vPx8K Нашёл способ здесь: https://stackoverflow.com/questions/46871005/how-to-unroll-a-for-loop-using-template-metaprogramming
а не проще просто 5 раз написать вызов функции ?
А не проще 500 раз написать вызов функции?
Проще написать программу как-то по-другому. Я уверен, есть методы...
Да ладно, твист через integral_constant довольно тривиальный
Не использовать шаблонный параметр
arr передавать копией — боль
Поочему?
Если компилятор по какой-то причине не справится с оптимизацией копирования константного массива, то это просто так копировать n байт + в дебаге точно не будет таких оптимизаций
А как узнать, справился ли компилятор с оптимизацией, или нет? И что делать, если нужно, чтобы не справился?
1. Смотреть ассембли программы. 2. Вылавливать эджкейсы оптимизатора разве что.
Обсуждают сегодня