假設(shè)我有一個(gè)這樣的班級(jí)
template<int n>
class A{
array<size_t, n> sizes;
//...
public:
template <int k>
A<k> reshape(array<size_t, k> new_sizes){
return A<k>(new_sizes):
}
};
它可以工作,但參數(shù)new_sizes
是次優(yōu)的,因?yàn)槲冶仨氝@樣稱呼它:
foo.reshape(array<size_t, 3>{1,2,3});
這不起作用:
foo.reshape({1,2,3});
有沒(méi)有一種方法可以用編譯時(shí)大小定義initializer_list
(所以我可以用它來(lái)代替數(shù)組),或者(甚至更好)一種方法來(lái)定義變量參數(shù)的大小,所以我可以寫(xiě)類似這樣的東西
foo.reshape(1,2,3);
您可以使用
sizeof...
參數(shù)包:Demo