I've been working on ways to process transactions within some anchor functions and I ended up with this below. It works perfectly however I noticed that the signer array is empty and was curious why it isn't necessary for me to pass in anything there.
let transfer_instruction: Instruction = system_instruction::transfer(user.key,item_account.to_account_info().key,lamports);
solana_program::program::invoke_signed(
&transfer_instruction,
&[
user.to_account_info(),
item_account.to_account_info().clone(),
ctx.accounts.system_program.to_account_info(),
],
&[], <<-- No signer needed here?
)?;
Since it works without it, my following question would be, then in what scenario do we need to pass it here as I've manage to add this type of transactions throughout my app and have never needed to add the signer.