2011-02-07 36 views
3

我剛發現boost :: array :: static_size不是tr1 :: array的一部分,或者至少它不在我的實現中(GCC 4.2.1)和我無法在任何tr1文檔中找到它。在編譯時檢查tr1數組的大小

是否有另一種方法對tr1數組中的元素數執行編譯時斷言?

例如具有升壓陣列,但不是TR1陣列以下工作:

template<typename T> 
void CheckArray(const T& input) { 
    BOOST_STATIC_ASSERT(T::static_size >= 2); 
} 

我知道我可以只使用升壓轉換器的陣列,而不是,但我很好奇。

如果沒有辦法做到這一點,也許有人知道爲什麼static_size不包含在tr1中?它僅僅是在tr1創建之後添加的一項功能?

回答

4

TR1本身說std::tuple_size<array<T, N> >::value返回N,數組的大小。

+0

完美,謝謝:) – irh 2011-02-07 02:23:42