Nicolai Josuttis shared a trick about using std::ref + std::initializer_list:
https://twitter.com/NicoJosuttis/status/1148659818770640896
Back in the old days @VMW we have vmw::ref as reference counter type for our objects, here, std::ref is a free function returns std::reference_wrapper which ref-init the passing in object.
Since C++14, the underline implement of std::initializer_list has been standardized, states that:
The underlying array is a temporary array of type const T[N], in which each element is copy-initialized.
Modified sample code address this in more detailed phase:
https://twitter.com/NicoJosuttis/status/1148659818770640896
Back in the old days @VMW we have vmw::ref as reference counter type for our objects, here, std::ref is a free function returns std::reference_wrapper which ref-init the passing in object.
Since C++14, the underline implement of std::initializer_list has been standardized, states that:
The underlying array is a temporary array of type const T[N], in which each element is copy-initialized.
Modified sample code address this in more detailed phase:
#include <iostream>
#include <functional>
using namespace std;
struct Fun{
int data = 42;
Fun() = default;
Fun(const Fun&) = delete;
};
int main(){
Fun f1;
Fun f2;
for(auto& a : {ref(f1), ref(f2)}){
cout << a.get().data << endl;
}
for(auto& a : {Fun{}, Fun{}}){
cout << a.data << endl;
}
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.