2
다음은 나에게 아무 것도 출력하지 않습니다. 알다시피, initializer_list의 수명은 매우 제한되어 있으며 initializer_list를 복사해도 기본 요소가 복사되지 않습니다. 나는 값으로 지나가는 것이 움직일 수 있다고 생각했고, 심지어 명백한 움직임조차도 작동하지 않는다. 참조에 바인드 할 수없고 별도의 참조 변수를 사용하면 여기에서 작동하지 않습니다. 벡터를 사용하더라도 작동하지 않습니다 ??initializer_list는 어떻게 복사합니까?
template <typename T, typename Pred>
void for_each(T t, const Pred& pred)
{
auto local = std::vector<typename T::value_type>{t.begin(), t.end()};
for (typename decltype(local)::size_type i = 0; i < local.size(); ++i)
pred(*(i + std::begin(local)));
}
void pred(char c)
{
std::cout << c << " ";
}
int main()
{
auto arr { 1, 2, 3 };
for_each(arr, pred);
return 0;
}
당신은 아무것도 볼
또한 단지 함수 템플릿을 작성할 수 0x01, 0x02 및 0x03 모두 인쇄 가능한 문자가 아니기 때문에 – sp2danny