... | ... |
@@ -211,16 +211,26 @@ |
211 | 211 |
kruskal(graph, seq, out); |
212 | 212 |
} |
213 | 213 |
}; |
214 | 214 |
|
215 |
template <typename T> |
|
216 |
struct RemoveConst { |
|
217 |
typedef T type; |
|
218 |
}; |
|
219 |
|
|
220 |
template <typename T> |
|
221 |
struct RemoveConst<const T> { |
|
222 |
typedef T type; |
|
223 |
}; |
|
224 |
|
|
215 | 225 |
template <typename Graph, typename In, typename Out> |
216 | 226 |
struct KruskalOutputSelector<Graph, In, Out, |
217 | 227 |
typename enable_if<SequenceOutputIndicator<Out>, void>::type > |
218 | 228 |
{ |
219 | 229 |
typedef typename In::value_type::second_type Value; |
220 | 230 |
|
221 | 231 |
static Value kruskal(const Graph& graph, const In& in, Out& out) { |
222 |
typedef StoreBoolMap<Out> Map; |
|
232 |
typedef StoreBoolMap<typename RemoveConst<Out>::type> Map; |
|
223 | 233 |
Map map(out); |
224 | 234 |
return _kruskal_bits::kruskal(graph, in, map); |
225 | 235 |
} |
226 | 236 |
... | ... |
@@ -84,9 +84,9 @@ |
84 | 84 |
{ |
85 | 85 |
checkConcept<ReadWriteMap<A,B>, ConstMap<A,B> >(); |
86 | 86 |
checkConcept<ReadWriteMap<A,C>, ConstMap<A,C> >(); |
87 | 87 |
ConstMap<A,B> map1; |
88 |
ConstMap<A,B> map2 |
|
88 |
ConstMap<A,B> map2 = B(); |
|
89 | 89 |
ConstMap<A,B> map3 = map1; |
90 | 90 |
map1 = constMap<A>(B()); |
91 | 91 |
map1 = constMap<A,B>(); |
92 | 92 |
map1.setAll(B()); |
... | ... |
@@ -142,9 +142,9 @@ |
142 | 142 |
// SparseMap |
143 | 143 |
{ |
144 | 144 |
checkConcept<ReferenceMap<A,B,B&,const B&>, SparseMap<A,B> >(); |
145 | 145 |
SparseMap<A,B> map1; |
146 |
SparseMap<A,B> map2 |
|
146 |
SparseMap<A,B> map2 = B(); |
|
147 | 147 |
SparseMap<A,B> map3 = sparseMap<A,B>(); |
148 | 148 |
SparseMap<A,B> map4 = sparseMap<A>(B()); |
149 | 149 |
|
150 | 150 |
checkConcept< ReferenceMap<double, int, int&, const int&>, |
0 comments (0 inline)