1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
|
diff --git a/include/stxxl/bits/algo/ksort.h b/include/stxxl/bits/algo/ksort.h
index 33ec8cf..8101741 100644
--- a/include/stxxl/bits/algo/ksort.h
+++ b/include/stxxl/bits/algo/ksort.h
@@ -299,11 +299,7 @@ create_runs(
template <typename BlockType,
typename prefetcher_type,
typename KeyExtractor>
-struct run_cursor2_cmp : public std::binary_function<
- run_cursor2<BlockType, prefetcher_type>,
- run_cursor2<BlockType, prefetcher_type>,
- bool
- >
+struct run_cursor2_cmp
{
typedef run_cursor2<BlockType, prefetcher_type> cursor_type;
KeyExtractor keyobj;
@@ -327,7 +323,7 @@ private:
};
template <typename RecordType, typename KeyExtractor>
-class key_comparison : public std::binary_function<RecordType, RecordType, bool>
+class key_comparison
{
KeyExtractor ke;
diff --git a/include/stxxl/bits/algo/sort_helper.h b/include/stxxl/bits/algo/sort_helper.h
index 524e40d..69234c4 100644
--- a/include/stxxl/bits/algo/sort_helper.h
+++ b/include/stxxl/bits/algo/sort_helper.h
@@ -51,7 +51,6 @@ struct trigger_entry
template <typename TriggerEntryType, typename ValueCmp>
struct trigger_entry_cmp
- : public std::binary_function<TriggerEntryType, TriggerEntryType, bool>
{
typedef TriggerEntryType trigger_entry_type;
ValueCmp cmp;
@@ -67,11 +66,6 @@ template <typename BlockType,
typename PrefetcherType,
typename ValueCmp>
struct run_cursor2_cmp
- : public std::binary_function<
- run_cursor2<BlockType, PrefetcherType>,
- run_cursor2<BlockType, PrefetcherType>,
- bool
- >
{
typedef BlockType block_type;
typedef PrefetcherType prefetcher_type;
diff --git a/include/stxxl/bits/compat/unique_ptr.h b/include/stxxl/bits/compat/unique_ptr.h
index 9df12ff..7110246 100644
--- a/include/stxxl/bits/compat/unique_ptr.h
+++ b/include/stxxl/bits/compat/unique_ptr.h
@@ -22,12 +22,7 @@ STXXL_BEGIN_NAMESPACE
template <class Type>
struct compat_unique_ptr {
-#if __cplusplus >= 201103L && ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100) >= 40400)
typedef std::unique_ptr<Type> result;
-#else
- // auto_ptr is inherently broken and is deprecated by unique_ptr in c++0x
- typedef std::auto_ptr<Type> result;
-#endif
};
STXXL_END_NAMESPACE
diff --git a/include/stxxl/bits/containers/btree/leaf.h b/include/stxxl/bits/containers/btree/leaf.h
index d7c619f..969adfd 100644
--- a/include/stxxl/bits/containers/btree/leaf.h
+++ b/include/stxxl/bits/containers/btree/leaf.h
@@ -66,7 +66,7 @@ public:
typedef node_cache<normal_leaf, btree_type> leaf_cache_type;
public:
- struct value_compare : public std::binary_function<value_type, value_type, bool>
+ struct value_compare
{
key_compare comp;
diff --git a/include/stxxl/bits/containers/btree/node.h b/include/stxxl/bits/containers/btree/node.h
index 13dec7b..c26cfff 100644
--- a/include/stxxl/bits/containers/btree/node.h
+++ b/include/stxxl/bits/containers/btree/node.h
@@ -71,7 +71,7 @@ public:
typedef node_cache<normal_node, btree_type> node_cache_type;
private:
- struct value_compare : public std::binary_function<value_type, value_type, bool>
+ struct value_compare
{
key_compare comp;
diff --git a/include/stxxl/bits/containers/hash_map/hash_map.h b/include/stxxl/bits/containers/hash_map/hash_map.h
index 0759bd2..edcc2ac 100644
--- a/include/stxxl/bits/containers/hash_map/hash_map.h
+++ b/include/stxxl/bits/containers/hash_map/hash_map.h
@@ -1258,10 +1258,7 @@ protected:
* lexicographically by <hash-value, key> Note: the hash-value has already
* been computed.
*/
- struct Cmp : public std::binary_function<
- std::pair<internal_size_type, value_type>,
- std::pair<internal_size_type, value_type>, bool
- >
+ struct Cmp
{
self_type& map_;
Cmp(self_type& map) : map_(map) { }
@@ -1520,7 +1517,7 @@ protected:
public:
//! Construct an equality predicate from the comparison operator
- struct equal_to : public std::binary_function<key_type, key_type, bool>
+ struct equal_to
{
//! reference to hash_map
const self_type& m_map;
diff --git a/include/stxxl/bits/io/wbtl_file.h b/include/stxxl/bits/io/wbtl_file.h
index 933a216..d9f0674 100644
--- a/include/stxxl/bits/io/wbtl_file.h
+++ b/include/stxxl/bits/io/wbtl_file.h
@@ -65,7 +65,7 @@ class wbtl_file : public disk_queued_file
size_type curpos;
request_ptr backend_request;
- struct FirstFit : public std::binary_function<place, offset_type, bool>
+ struct FirstFit
{
bool operator () (
const place& entry,
diff --git a/include/stxxl/bits/mng/block_alloc.h b/include/stxxl/bits/mng/block_alloc.h
index 19ade8b..dac408f 100644
--- a/include/stxxl/bits/mng/block_alloc.h
+++ b/include/stxxl/bits/mng/block_alloc.h
@@ -138,7 +138,7 @@ private:
perm[i] = i;
stxxl::random_number<random_uniform_fast> rnd;
- std::random_shuffle(perm.begin(), perm.end(), rnd _STXXL_FORCE_SEQUENTIAL);
+ std::shuffle(perm.begin(), perm.end(), std::mt19937(std::random_device()()));
}
public:
diff --git a/include/stxxl/bits/mng/block_alloc_interleaved.h b/include/stxxl/bits/mng/block_alloc_interleaved.h
index a82ee34..83925a3 100644
--- a/include/stxxl/bits/mng/block_alloc_interleaved.h
+++ b/include/stxxl/bits/mng/block_alloc_interleaved.h
@@ -93,7 +93,7 @@ struct interleaved_RC : public interleaved_striping
perms[i][j] = j;
random_number<random_uniform_fast> rnd;
- std::random_shuffle(perms[i].begin(), perms[i].end(), rnd _STXXL_FORCE_SEQUENTIAL);
+ std::shuffle(perms[i].begin(), perms[i].end(), std::mt19937(std::random_device()()));
}
}
diff --git a/include/stxxl/bits/mng/disk_allocator.h b/include/stxxl/bits/mng/disk_allocator.h
index 59ad085..a4e534e 100644
--- a/include/stxxl/bits/mng/disk_allocator.h
+++ b/include/stxxl/bits/mng/disk_allocator.h
@@ -44,7 +44,7 @@ class disk_allocator : private noncopyable
{
typedef std::pair<stxxl::int64, stxxl::int64> place;
- struct first_fit : public std::binary_function<place, stxxl::int64, bool>
+ struct first_fit
{
bool operator () (
const place& entry,
@@ -189,7 +189,7 @@ void disk_allocator::new_blocks(BID<BlockSize>* begin, BID<BlockSize>* end)
sortseq::iterator space;
space = std::find_if(free_space.begin(), free_space.end(),
- bind2nd(first_fit(), requested_size) _STXXL_FORCE_SEQUENTIAL);
+ std::bind(first_fit(), std::placeholders::_1, requested_size) _STXXL_FORCE_SEQUENTIAL);
if (space == free_space.end() && requested_size == BlockSize)
{
@@ -207,7 +207,7 @@ void disk_allocator::new_blocks(BID<BlockSize>* begin, BID<BlockSize>* end)
grow_file(BlockSize);
space = std::find_if(free_space.begin(), free_space.end(),
- bind2nd(first_fit(), requested_size) _STXXL_FORCE_SEQUENTIAL);
+ std::bind(first_fit(), std::placeholders::_1, requested_size) _STXXL_FORCE_SEQUENTIAL);
}
if (space != free_space.end())
diff --git a/include/stxxl/bits/msvc_compatibility.h b/include/stxxl/bits/msvc_compatibility.h
index c2c937d..0cb22e5 100644
--- a/include/stxxl/bits/msvc_compatibility.h
+++ b/include/stxxl/bits/msvc_compatibility.h
@@ -19,10 +19,12 @@
#include <cmath>
+#if _MSC_VER < 1900
inline double log2(double x)
{
return (log(x) / log(2.));
}
+#endif // ^^^ _MSC_VER < 1900
// http://msdn.microsoft.com/en-us/library/2ts7cx93.aspx
#define snprintf _snprintf
diff --git a/include/stxxl/bits/parallel.h b/include/stxxl/bits/parallel.h
index d973861..c858d87 100644
--- a/include/stxxl/bits/parallel.h
+++ b/include/stxxl/bits/parallel.h
@@ -121,7 +121,6 @@ using __gnu_parallel::random_shuffle;
#elif STXXL_PARALLEL
using std::sort;
-using std::random_shuffle;
#else
diff --git a/include/stxxl/bits/parallel/base.h b/include/stxxl/bits/parallel/base.h
index 141d515..1c970f9 100644
--- a/include/stxxl/bits/parallel/base.h
+++ b/include/stxxl/bits/parallel/base.h
@@ -33,7 +33,6 @@ namespace parallel {
*/
template <class Predicate, typename first_argument_type, typename second_argument_type>
class binary_negate
- : public std::binary_function<first_argument_type, second_argument_type, bool>
{
protected:
Predicate pred;
@@ -80,7 +79,7 @@ static inline void decode2(lcas_t x, int& a, int& b)
* Constructs predicate for equality from strict weak ordering predicate
*/
template <class Comparator, typename T1, typename T2>
-class equal_from_less : public std::binary_function<T1, T2, bool>
+class equal_from_less
{
private:
Comparator& comp;
@@ -126,7 +125,7 @@ median_of_three_iterators(RandomAccessIterator a, RandomAccessIterator b,
/** Similar to std::equal_to, but allows two different types. */
template <typename T1, typename T2>
-struct equal_to : std::binary_function<T1, T2, bool>
+struct equal_to
{
bool operator () (const T1& t1, const T2& t2) const
{
@@ -136,7 +135,7 @@ struct equal_to : std::binary_function<T1, T2, bool>
/** Similar to std::less, but allows two different types. */
template <typename T1, typename T2>
-struct less : std::binary_function<T1, T2, bool>
+struct less
{
bool operator () (const T1& t1, const T2& t2) const
{
diff --git a/include/stxxl/bits/parallel/multiseq_selection.h b/include/stxxl/bits/parallel/multiseq_selection.h
index 57e7599..f41d9aa 100644
--- a/include/stxxl/bits/parallel/multiseq_selection.h
+++ b/include/stxxl/bits/parallel/multiseq_selection.h
@@ -35,7 +35,6 @@ namespace parallel {
//! Compare a pair of types lexcigraphically, ascending.
template <typename T1, typename T2, typename Comparator>
class lexicographic
- : public std::binary_function<std::pair<T1, T2>, std::pair<T1, T2>, bool>
{
protected:
Comparator& m_comp;
@@ -60,7 +59,6 @@ public:
//! Compare a pair of types lexcigraphically, descending.
template <typename T1, typename T2, typename Comparator>
class lexicographic_rev
- : public std::binary_function<std::pair<T1, T2>, std::pair<T1, T2>, bool>
{
protected:
Comparator& m_comp;
diff --git a/lib/io/wbtl_file.cpp b/lib/io/wbtl_file.cpp
index 310d76a..5f1a766 100644
--- a/lib/io/wbtl_file.cpp
+++ b/lib/io/wbtl_file.cpp
@@ -304,7 +304,7 @@ wbtl_file::offset_type wbtl_file::get_next_write_block()
// mapping_lock has to be aquired by caller
sortseq::iterator space =
std::find_if(free_space.begin(), free_space.end(),
- bind2nd(FirstFit(), write_block_size) _STXXL_FORCE_SEQUENTIAL);
+ std::bind(FirstFit(), std::placeholders::_1, write_block_size) _STXXL_FORCE_SEQUENTIAL);
if (space != free_space.end())
{
|