![](/img/trans.png)
[英]c++ How can i save function return type for lambda function without template?
[英]How can I pass the return of a lambda function to another function in C++?
我有一個外部 function 定義為extern "C" int64_t ASMFunction(int64_t sort);
然后我有一個 C++ function 定義如下:
template <typename T>
void results(T&& sort) {
ASMFunction([&](int64_t sort[60]) {for (int i = 0; i < sizeof(sort); i++) {
sort[i] = rand() % 9223372036854775807;
};
return sort; }
);
}
我在模板下定義它的原因是因為否則我得到編譯器錯誤no suitable conversion function from "lambda []int64_t *(int64_t *sort)->int64_t *" to "int64_t" exists
。 否則,我什至沒有單獨的 function 來調用我的外部 ASMFunction,而只是在 main() 中執行此操作。 這樣,我得到編譯器錯誤Error C2664 'int64_t ASMFunction(int64_t)': cannot convert argument 1 from 'main::<lambda_2b1e6f6fde7359a6cb4cb68639dfae02>' to 'int64_t'
。 如何使用 C++ Lambda function 生成一個隨機整數數組作為另一個 ZC1C42145AB68E683984F 的參數?
您正在嘗試生成一個數字列表,但您的ASMFunction
只得到一個。
如果你想要一個列表,你可以這樣做:
int64_t ASMFunction(int64_t * sort)
{
std::cout << "Num: " << sort[1] << endl;
return 0;
}
template <typename T, const int64_t N>
void results(T (&sort)[N]) {
ASMFunction([&]() {for (int64_t i = 0; i < N; i++) {
sort[i] = rand() % 9223372036854775807;
};
return sort;
}() // <- note you are calling the function to generate the list
);
}
int main() {
int64_t i[10];
results(i);
return 0;
}
如果您只想要一個號碼:
int64_t ASMFunction(int64_t sort)
{
std::cout << "Num: " << sort << endl;
return 0;
}
template <typename T, const int64_t N>
void results(T (&sort)[N]) {
ASMFunction([&]() { return rand() % 9223372036854775807; }() );
}
int main() {
int64_t i[10];
results(i);
return 0;
}
typename T
是類型,在這種情況下是int64_t
和const int64_t N
是能夠讓模板推導出數組大小。 每個數組大小都會有一個新的模板實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.