我目前對固定大小參數包C++語言功能提案(n4072)的進展感到好奇。此功能允許以下語法爲有效C++語法:固定大小參數包的狀態
void Foo(int...[10] iList);
這將允許使用各種有用的模板元編程功能。我的主要原因是因爲我創建了一個圖書館類,它代表了一個任意級別的數學張量對象。
這將允許我做索引類時,以下幾點:
template <typename T, std::size_t... Sizes>
class CTensor {
// ...
public:
NumType& operator()(std::size_t...[sizeof...(Sizes)] coords)
{
// Return reference to element at the position specified
// by coords.
}
};
,並調用它以下列方式:
CTensor<int, 3, 4, 5> tensor;
/* tensor(1, 2, 3, 4) = 5; // Results in a descriptive compile-time error */
tensor(1, 2, 3) = 5; // Sets the element at (1, 2, 3) to 5.
據我所知是沒有辦法來實現這一標準的C++ 11,所以我對這個提議非常感興趣,但我找不到任何有關工作組接受或拒絕的信息;誰能提供更多信息?
查看此拉珀斯維爾旅行報告(http://botondballo.wordpress.com/2014/07/17/trip-report-c-standards-committee-meeting-in-rapperswil-june-2014/)。無論如何,在C++中可能會有一個靜態斷言,即大小相同,或者如果它們不相等,則可以將它們排除。 – chris
對此,並沒有真正的迫切性。你已經可以編寫你想要的代碼了,它只是更加詳細一點。 –
另外,使用概念精簡版,您所需要的代碼更容易編寫。這也使得指定'... [X]'的含義變得容易得多,因爲這樣他們就可以依靠概念。 – Yakk