是否有可能在做這個可能通過重複的函數調用來初始化const std :: array嗎?
int foo(){
static int i=0;
ret = i++;
return ret;
}
const std::array<int,3> arr = {{foo(),foo(),foo()}};
(模板?)函數或指定「調用了foo的每一個成員的初始化」?即一種方式。
const std::array<int,3> arr = fill_with_foo<3,foo>();
對於上下文來說,arr是一個隊列中的一個緩衝區,它將從中讀取N個元素(在編譯時已知)。目前我正在使用代碼生成來創建長格式,並且我有一個函數,它只是簡單地分配一個普通數組,然後用for循環填充它並返回數組,但我想知道是否有可能使緩衝區數組爲const。
//編輯:不像在鏈接的「複製」,我需要
int foo();
是在編譯的時候不確定性,即我認爲constexpr是不可能的(正如我所說的,它需要讀取來自在運行時填充的隊列)。我主要對刪除無用副本感興趣
您是否試過使它成爲constexpr? –
@Bob__不能在運行時填充隊列,我想呢? –