1
我想允許對我寫的容器類進行常量或非常量迭代。我的容器將元素存儲在非const
引用的std::vector
中(稱爲elements
)。我使用Boost的transform iterator要做到這一點,如:在C++中將T從T轉換爲const T的函數
auto begin() const
{
return boost::make_transform_iterator
(elements.begin()
, to_const<std::reference_wrapper<ElementType>>
);
}
在這裏我用一個簡單的函數模板,我寫信給T
類型的對象轉換爲const T
:
template <typename T>
std::add_const<T>::type to_const(T value) { return value; }
我知道這是瑣碎寫,但我只是想知道是否已經有一個STL或Boost函數模板來做到這一點,類似於std::add_const
,但作爲一個實際的功能。 (或者,如果有人知道更好的方法來將一個可變的向量懶散地轉換成一個常量向量,那會更好。)
完善。我忘記了constexpr和reference參數,這就是爲什麼我想要找到一個標準的實現。 :P –
爲了完整性,應該說這*如果是'const'則允許臨時對象作爲參數。 –
@ JohannesSchaub-litb,由於這不是轉發引用,因此只有在明確的模板參數如['std :: as_const(A())'**或... **'std :: as_const(static_cast (A()));'](http://coliru.stacked-crooked.com/a/77d58c9af7e711af)...但爲什麼有人甚至想這樣做? –
WhiZTiM