왜 '벡터
다음 예를 고려하세요.
#include <vector> struct A { void foo() {} }; template<typename T> void callIfToggled(bool v1, bool &v2, T &t) { if (v1 != v2) { v2 = v1; t.foo(); } } int main() { std::vector<bool> v = {false, true, false}; const bool f = false; A a; callIfToggled(f, v[0], a); callIfToggled(f, v[1], a); callIfToggled(f, v[2], a); }
이 코드는 다음과 같이 컴파일되지 않습니다. 오류:
dk2.cpp:29:28: error: no matching function for call to 'callIfToggled(const bool&, std::vector<bool>::reference, A&)'
'std::Vector
'bool'에 대한 벡터 특수화
'std::Vector
'fixed_Vector' 및 'Boost Containers'
이 문제를 완화하려면 다음을 사용할 수 있습니다. 전략:
'fixed_Vector' 사용 예:
template<typename t, typename... p> using fixed_vector = std::vector<typename foo<t>::type, p...>; int main() { fixed_vector<bool> v = {false, true, false}; const bool f = false; A a; callIfToggled(f, v[0], a); callIfToggled(f, v[1], a); callIfToggled(f, v[2], a); }
'Boost Containers' 사용 예:
#include <boost/container/vector.hpp> int main() { boost::container::vector<bool> v = {false, true, false}; const bool f = false; A a; callIfToggled(f, v[0], a); callIfToggled(f, v[1], a); callIfToggled(f, v[2], a); }
위 내용은 `std::Vector::reference`가 `bool` 참조를 반환하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!