led*_*ter 15 c++ return-type c++11 c++14
我有以下功能:
... getX()
{
static int x[] = {1, 2, 3};
return x;
}
Run Code Online (Sandbox Code Playgroud)
我想要它的返回类型,int(&)[3]但不要明确指定大小(3).
我怎么做?
(请不要问我为什么要那样.)
UPD
嗯,好的,我需要将结果传递给模板函数int(&x)[N]作为参数(我不想将大小明确地传递给该模板函数),所以我看不到返回一对的解决方案如何工作...
Vit*_*meo 18
在C++ 14中:
auto& getX()
{
static int x[] = {1, 2, 3};
return x;
}
Run Code Online (Sandbox Code Playgroud)
另外,考虑使用std::array而不是C风格的数组.
我目前无法想到任何符合标准的C++ 11解决方案.这里有一个使用复合文字,假设你的目标是不重复元素并推导出一个引用数组:
#include <type_traits>
#define ITEMS 1, 2, 3
auto getX() -> decltype((int[]){ITEMS})
{
static int x[] = {ITEMS};
return x;
}
#undef ITEMS
int main()
{
static_assert(std::is_same<decltype(getX()), int(&)[3]>{});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1007 次 |
| 最近记录: |