¿Cómo pasar una matriz temporal?

¿Cómo puedo pasar una matriz temporal? Quiero hacer algo como esto:

#include <iostream>

int sum(int arr[]) {
    int answer = 0;
    for (const auto& i : arr) {
        answer += i;
    }
    return answer;
}

int main() {
    std::cout << sum( {4, 2} ) << std::endl;       // error
    std::cout << sum( int[]{4, 2} ) << std::endl;  // error
}

¿Necesito un literal entero positivo en las llaves del parámetro de función[]? Si incluyo ese literal, ¿limitará qué matrices puedo pasar a solo matrices de ese tamaño? Además, ¿cómo puedo pasar elementos de matriz por rvalue reference o const reference? Como la muestra anterior no se compila, supongo que se debe hacer el tipo de parámetro de la funciónint&&[] oconst int&[] no funciona

Respuestas a la pregunta(2)

Su respuesta a la pregunta