В C ++ 11 вы можете.Примечание заранее: не new
массив, в этом нет необходимости.
Во-первых, string[] strArray
- это синтаксическая ошибка, которая должна быть либо string* strArray
, либо string strArray[]
.И я предполагаю, что только в качестве примера вы не передаете параметр размера.
#include <string>
void foo(std::string* strArray, unsigned size){
// do stuff...
}
template<class T>
using alias = T;
int main(){
foo(alias<std::string[]>{"hi", "there"}, 2);
}
Обратите внимание, что было бы лучше, если бы вам не нужно было передавать размер массива какдополнительный параметр, и, к счастью, есть способ: Шаблоны!
template<unsigned N>
void foo(int const (&arr)[N]){
// ...
}
Обратите внимание, что это будет соответствовать только массивам стека, как int x[5] = ...
.Или временные, созданные с использованием alias
выше.
int main(){
foo(alias<int[]>{1, 2, 3});
}