1
std::tuple
을 참조로 사용하거나 참조가 없을 경우 복사하거나 이동 한 값을 유지하려고합니다. 현명한 (예 : 임시직).튜플에 const 참조 또는 const 값을 넣음
은 지금까지 내가 가지고 : 내가 무엇을 바라고 대한 가깝지만 아주 const
충분하지
#include <functional>
#include <iostream>
template <typename ...Args>
struct foo {
const std::tuple<Args...> values;
};
template <typename T1, typename T2>
foo<T1, T2> make2(T1&& v1, T2&& v2) {
return foo<T1,T2>{std::tuple<T1, T2>(std::forward<T1>(v1),std::forward<T2>(v2))};
}
int main() {
double d1=1000;
double& d2 = d1;
auto f = make2(d2, 0);
std::cout << std::get<0>(f.values) << ", " << std::get<1>(f.values) << "\n";
d1 = -666;
std::get<0>(f.values)=0; // Allowed - how can I inject some more constness into references?
//std::get<1>(f.values) = -1; // Prohibited because values is const
std::cout << std::get<0>(f.values) << ", " << std::get<1>(f.values) << "\n";
}
- 나는 const std::tuple<double&, int>
와 끝까지 물론 나를 그 두 배를 수정할 수있는 튜플은 다음을 나타냅니다.
내가 const
좀 더 뿌리는 시도는 make2
에 다움 :
template <typename T1, typename T2>
foo<T1 const, T2 const> make2(T1&& v1, T2&& v2) {
return foo<T1 const,T2 const>{std::tuple<T1 const, T2 const>(std::forward<T1>(v1),std::forward<T2>(v2))};
}
가
int
(즉, 비 참조) 튜플 회원
const
(몹시 흥분하지 주어진 내가 충분히 쉽게 전체 튜플
const
을 할 수 제작에 성공 그), 그러나
double&
회원에게는 아무런 영향을주지 않았습니다. 왜? 그 여분의
const
을 어떻게 추가 할 수 있습니까?