Skip to content

Commit 843667a

Browse files
committed
Compile with -permissive- on MSVC (issue #10)
1 parent 5c60e81 commit 843667a

File tree

9 files changed

+69
-35
lines changed

9 files changed

+69
-35
lines changed

changelog.in

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,15 @@ Thanks: Jip J. Dekker
7676
[DESCRIPTION]
7777
Added installation target to the CMake configuration.
7878

79+
[ENTRY]
80+
Module: other
81+
What: change
82+
Rank: minor
83+
[DESCRIPTION]
84+
Fix compilation problems with the Microsoft Visual Studio IDE
85+
which uses -permissive- as default, rather than -permissive as
86+
cl.exe does.
87+
7988
[ENTRY]
8089
Module: kernel
8190
What: new

gecode/int/branch/merit.hpp

100644100755
Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ namespace Gecode { namespace Int { namespace Branch {
3636
// Minimum merit
3737
template<class View>
3838
forceinline
39-
MeritMin<View>::MeritMin(Space& home, const VarBranch<Var>& vb)
39+
MeritMin<View>::MeritMin
40+
(Space& home, const VarBranch<MeritMin<View>::Var>& vb)
4041
: MeritBase<View,int>(home,vb) {}
4142
template<class View>
4243
forceinline
@@ -51,7 +52,8 @@ namespace Gecode { namespace Int { namespace Branch {
5152
// Maximum merit
5253
template<class View>
5354
forceinline
54-
MeritMax<View>::MeritMax(Space& home, const VarBranch<Var>& vb)
55+
MeritMax<View>::MeritMax
56+
(Space& home, const VarBranch<MeritMax<View>::Var>& vb)
5557
: MeritBase<View,int>(home,vb) {}
5658
template<class View>
5759
forceinline
@@ -66,7 +68,8 @@ namespace Gecode { namespace Int { namespace Branch {
6668
// Size merit
6769
template<class View>
6870
forceinline
69-
MeritSize<View>::MeritSize(Space& home, const VarBranch<Var>& vb)
71+
MeritSize<View>::MeritSize
72+
(Space& home, const VarBranch<MeritSize<View>::Var>& vb)
7073
: MeritBase<View,unsigned int>(home,vb) {}
7174
template<class View>
7275
forceinline
@@ -81,7 +84,8 @@ namespace Gecode { namespace Int { namespace Branch {
8184
// Degree over size merit
8285
template<class View>
8386
forceinline
84-
MeritDegreeSize<View>::MeritDegreeSize(Space& home, const VarBranch<Var>& vb)
87+
MeritDegreeSize<View>::MeritDegreeSize
88+
(Space& home, const VarBranch<MeritDegreeSize<View>::Var>& vb)
8589
: MeritBase<View,double>(home,vb) {}
8690
template<class View>
8791
forceinline
@@ -96,7 +100,8 @@ namespace Gecode { namespace Int { namespace Branch {
96100
// AFC over size merit
97101
template<class View>
98102
forceinline
99-
MeritAFCSize<View>::MeritAFCSize(Space& home, const VarBranch<Var>& vb)
103+
MeritAFCSize<View>::MeritAFCSize
104+
(Space& home, const VarBranch<MeritAFCSize<View>::Var>& vb)
100105
: MeritBase<View,double>(home,vb), afc(vb.afc()) {}
101106
template<class View>
102107
forceinline
@@ -122,8 +127,8 @@ namespace Gecode { namespace Int { namespace Branch {
122127
// Action over size merit
123128
template<class View>
124129
forceinline
125-
MeritActionSize<View>::MeritActionSize(Space& home,
126-
const VarBranch<Var>& vb)
130+
MeritActionSize<View>::MeritActionSize
131+
(Space& home, const VarBranch<MeritActionSize<View>::Var>& vb)
127132
: MeritBase<View,double>(home,vb), action(vb.action()) {}
128133
template<class View>
129134
forceinline
@@ -148,8 +153,8 @@ namespace Gecode { namespace Int { namespace Branch {
148153
// CHB over size merit
149154
template<class View>
150155
forceinline
151-
MeritCHBSize<View>::MeritCHBSize(Space& home,
152-
const VarBranch<Var>& vb)
156+
MeritCHBSize<View>::MeritCHBSize
157+
(Space& home, const VarBranch<MeritCHBSize<View>::Var>& vb)
153158
: MeritBase<View,double>(home,vb), chb(vb.chb()) {}
154159
template<class View>
155160
forceinline
@@ -174,7 +179,8 @@ namespace Gecode { namespace Int { namespace Branch {
174179
// Minimum regret merit
175180
template<class View>
176181
forceinline
177-
MeritRegretMin<View>::MeritRegretMin(Space& home, const VarBranch<Var>& vb)
182+
MeritRegretMin<View>::MeritRegretMin
183+
(Space& home, const VarBranch<MeritRegretMin<View>::Var>& vb)
178184
: MeritBase<View,unsigned int>(home,vb) {}
179185
template<class View>
180186
forceinline
@@ -189,7 +195,8 @@ namespace Gecode { namespace Int { namespace Branch {
189195
// Maximum regret merit
190196
template<class View>
191197
forceinline
192-
MeritRegretMax<View>::MeritRegretMax(Space& home, const VarBranch<Var>& vb)
198+
MeritRegretMax<View>::MeritRegretMax
199+
(Space& home, const VarBranch<MeritRegretMax<View>::Var>& vb)
193200
: MeritBase<View,unsigned int>(home,vb) {}
194201
template<class View>
195202
forceinline

gecode/int/branch/val-commit.hpp

100644100755
Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ namespace Gecode { namespace Int { namespace Branch {
3535

3636
template<class View>
3737
forceinline
38-
ValCommitEq<View>::ValCommitEq(Space& home, const ValBranch<Var>& vb)
38+
ValCommitEq<View>::ValCommitEq
39+
(Space& home, const ValBranch<ValCommitEq<View>::Var>& vb)
3940
: ValCommit<View,int>(home,vb) {}
4041
template<class View>
4142
forceinline
@@ -64,7 +65,8 @@ namespace Gecode { namespace Int { namespace Branch {
6465

6566
template<class View>
6667
forceinline
67-
ValCommitLq<View>::ValCommitLq(Space& home, const ValBranch<Var>& vb)
68+
ValCommitLq<View>::ValCommitLq
69+
(Space& home, const ValBranch<ValCommitLq<View>::Var>& vb)
6870
: ValCommit<View,int>(home,vb) {}
6971
template<class View>
7072
forceinline
@@ -93,7 +95,8 @@ namespace Gecode { namespace Int { namespace Branch {
9395

9496
template<class View>
9597
forceinline
96-
ValCommitGq<View>::ValCommitGq(Space& home, const ValBranch<Var>& vb)
98+
ValCommitGq<View>::ValCommitGq
99+
(Space& home, const ValBranch<ValCommitGq<View>::Var>& vb)
97100
: ValCommit<View,int>(home,vb) {}
98101
template<class View>
99102
forceinline
@@ -122,7 +125,8 @@ namespace Gecode { namespace Int { namespace Branch {
122125

123126
template<class View>
124127
forceinline
125-
ValCommitGr<View>::ValCommitGr(Space& home, const ValBranch<Var>& vb)
128+
ValCommitGr<View>::ValCommitGr
129+
(Space& home, const ValBranch<ValCommitGr<View>::Var>& vb)
126130
: ValCommit<View,int>(home,vb) {}
127131
template<class View>
128132
forceinline

gecode/int/branch/val-sel.hpp

100644100755
Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ namespace Gecode { namespace Int { namespace Branch {
3535

3636
template<class View>
3737
forceinline
38-
ValSelMin<View>::ValSelMin(Space& home, const ValBranch<Var>& vb)
38+
ValSelMin<View>::ValSelMin
39+
(Space& home, const ValBranch<ValSelMin<View>::Var>& vb)
3940
: ValSel<View,int>(home,vb) {}
4041
template<class View>
4142
forceinline
@@ -49,7 +50,8 @@ namespace Gecode { namespace Int { namespace Branch {
4950

5051
template<class View>
5152
forceinline
52-
ValSelMax<View>::ValSelMax(Space& home, const ValBranch<Var>& vb)
53+
ValSelMax<View>::ValSelMax
54+
(Space& home, const ValBranch<ValSelMax<View>::Var>& vb)
5355
: ValSel<View,int>(home,vb) {}
5456
template<class View>
5557
forceinline
@@ -63,7 +65,8 @@ namespace Gecode { namespace Int { namespace Branch {
6365

6466
template<class View>
6567
forceinline
66-
ValSelMed<View>::ValSelMed(Space& home, const ValBranch<Var>& vb)
68+
ValSelMed<View>::ValSelMed
69+
(Space& home, const ValBranch<ValSelMed<View>::Var>& vb)
6770
: ValSel<View,int>(home,vb) {}
6871
template<class View>
6972
forceinline
@@ -77,7 +80,8 @@ namespace Gecode { namespace Int { namespace Branch {
7780

7881
template<class View>
7982
forceinline
80-
ValSelAvg<View>::ValSelAvg(Space& home, const ValBranch<Var>& vb)
83+
ValSelAvg<View>::ValSelAvg
84+
(Space& home, const ValBranch<ValSelAvg<View>::Var>& vb)
8185
: ValSel<View,int>(home,vb) {}
8286
template<class View>
8387
forceinline
@@ -91,7 +95,8 @@ namespace Gecode { namespace Int { namespace Branch {
9195

9296
template<class View>
9397
forceinline
94-
ValSelRnd<View>::ValSelRnd(Space& home, const ValBranch<Var>& vb)
98+
ValSelRnd<View>::ValSelRnd
99+
(Space& home, const ValBranch<ValSelRnd<View>::Var>& vb)
95100
: ValSel<View,int>(home,vb), r(vb.rnd()) {}
96101
template<class View>
97102
forceinline
@@ -122,7 +127,8 @@ namespace Gecode { namespace Int { namespace Branch {
122127
}
123128

124129
forceinline
125-
ValSelRangeMin::ValSelRangeMin(Space& home, const ValBranch<IntVar>& vb)
130+
ValSelRangeMin::ValSelRangeMin
131+
(Space& home, const ValBranch<IntVar>& vb)
126132
: ValSel<IntView,int>(home,vb) {}
127133
forceinline
128134
ValSelRangeMin::ValSelRangeMin(Space& home, ValSelRangeMin& vs)

gecode/int/channel/dom.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,8 @@ namespace Gecode { namespace Int { namespace Channel {
194194
template<class View, class Offset, bool shared>
195195
ExecStatus
196196
Dom<View,Offset,shared>::propagate(Space& home, const ModEventDelta& med) {
197+
// MSVC in non-permissive mode needs this, no idea why...
198+
const int n = this->n;
197199
Region r;
198200
ProcessStack xa(r,n);
199201
ProcessStack ya(r,n);

gecode/int/ldsb/brancher.hpp

100644100755
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ namespace Gecode { namespace Int { namespace LDSB {
9595
ViewSel<View>* vs[n],
9696
ValSelCommitBase<View,Val>* vsc,
9797
SymmetryImp<View>** syms, int nsyms,
98-
BranchFilter<Var> bf,
99-
VarValPrint<Var,Val> vvp)
98+
BranchFilter<LDSBBrancher<View,n,Val,a,Filter,Print>::Var> bf,
99+
VarValPrint<LDSBBrancher<View,n,Val,a,Filter,Print>::Var,Val> vvp)
100100
: ViewValBrancher<View,n,Val,a,Filter,Print>(home, x, vs, vsc, bf, vvp),
101101
_syms(syms),
102102
_nsyms(nsyms),
@@ -112,8 +112,8 @@ namespace Gecode { namespace Int { namespace LDSB {
112112
post(Home home, ViewArray<View>& x,
113113
ViewSel<View>* vs[n], ValSelCommitBase<View,Val>* vsc,
114114
SymmetryImp<View>** syms, int nsyms,
115-
BranchFilter<Var> bf,
116-
VarValPrint<Var,Val> vvp) {
115+
BranchFilter<LDSBBrancher<View,n,Val,a,Filter,Print>::Var> bf,
116+
VarValPrint<LDSBBrancher<View,n,Val,a,Filter,Print>::Var,Val> vvp) {
117117
(void) new (home) LDSBBrancher<View,n,Val,a,Filter,Print>
118118
(home,x,vs,vsc,syms,nsyms,bf,vvp);
119119
}

gecode/kernel/branch/merit.hpp

100644100755
Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,8 @@ namespace Gecode {
189189
// User-defined function merit
190190
template<class View>
191191
forceinline
192-
MeritFunction<View>::MeritFunction(Space& home, const VarBranch<Var>& vb)
192+
MeritFunction<View>::MeritFunction
193+
(Space& home, const VarBranch<MeritFunction<View>::Var>& vb)
193194
: MeritBase<View,double>(home,vb), f(vb.merit()) {
194195
if (!f())
195196
throw InvalidFunction("MeritFunction::MeritFunction");
@@ -221,7 +222,8 @@ namespace Gecode {
221222
// Degree merit
222223
template<class View>
223224
forceinline
224-
MeritDegree<View>::MeritDegree(Space& home, const VarBranch<Var>& vb)
225+
MeritDegree<View>::MeritDegree
226+
(Space& home, const VarBranch<MeritDegree<View>::Var>& vb)
225227
: MeritBase<View,unsigned int>(home,vb) {}
226228
template<class View>
227229
forceinline
@@ -236,7 +238,8 @@ namespace Gecode {
236238
// AFC merit
237239
template<class View>
238240
forceinline
239-
MeritAFC<View>::MeritAFC(Space& home, const VarBranch<Var>& vb)
241+
MeritAFC<View>::MeritAFC
242+
(Space& home, const VarBranch<MeritAFC<View>::Var>& vb)
240243
: MeritBase<View,double>(home,vb), afc(vb.afc()) {}
241244
template<class View>
242245
forceinline
@@ -264,7 +267,8 @@ namespace Gecode {
264267
// Action merit
265268
template<class View>
266269
forceinline
267-
MeritAction<View>::MeritAction(Space& home, const VarBranch<Var>& vb)
270+
MeritAction<View>::MeritAction
271+
(Space& home, const VarBranch<MeritAction<View>::Var>& vb)
268272
: MeritBase<View,double>(home,vb), action(vb.action()) {}
269273
template<class View>
270274
forceinline
@@ -289,7 +293,8 @@ namespace Gecode {
289293
// CHB merit
290294
template<class View>
291295
forceinline
292-
MeritCHB<View>::MeritCHB(Space& home, const VarBranch<Var>& vb)
296+
MeritCHB<View>::MeritCHB
297+
(Space& home, const VarBranch<MeritCHB<View>::Var>& vb)
293298
: MeritBase<View,double>(home,vb), chb(vb.chb()) {}
294299
template<class View>
295300
forceinline

gecode/kernel/branch/val-sel.hpp

100644100755
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ namespace Gecode {
112112
// User-defined value selection
113113
template<class View>
114114
forceinline
115-
ValSelFunction<View>::ValSelFunction(Space& home, const ValBranch<Var>& vb)
115+
ValSelFunction<View>::ValSelFunction
116+
(Space& home, const ValBranch<ValSelFunction<View>::Var>& vb)
116117
: ValSel<View,Val>(home,vb), v(vb.val()) {
117118
if (!v())
118119
throw InvalidFunction("ValSelFunction::ValSelFunction");

gecode/set/ldsb/brancher.hpp

100644100755
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ namespace Gecode { namespace Set { namespace LDSB {
4040
ViewSel<View>* vs[n],
4141
ValSelCommitBase<View,Val>* vsc,
4242
SymmetryImp<View>** syms, int nsyms,
43-
BranchFilter<Var> bf,
44-
VarValPrint<Var,Val> vvp)
43+
BranchFilter<LDSBSetBrancher<View,n,Val,a,Filter,Print>::Var> bf,
44+
VarValPrint<LDSBSetBrancher<View,n,Val,a,Filter,Print>::Var,Val> vvp)
4545
: LDSBBrancher<View,n,Val,a,Filter,Print>
4646
(home, x, vs, vsc, syms, nsyms, bf, vvp),
4747
_prevPos(-1),
@@ -258,8 +258,8 @@ namespace Gecode { namespace Set { namespace LDSB {
258258
post(Home home, ViewArray<View>& x,
259259
ViewSel<View>* vs[n], ValSelCommitBase<View,Val>* vsc,
260260
SymmetryImp<View>** syms, int nsyms,
261-
BranchFilter<Var> bf,
262-
VarValPrint<Var,Val> vvp) {
261+
BranchFilter<LDSBSetBrancher<View,n,Val,a,Filter,Print>::Var> bf,
262+
VarValPrint<LDSBSetBrancher<View,n,Val,a,Filter,Print>::Var,Val> vvp) {
263263
(void) new (home) LDSBSetBrancher<View,n,Val,a,Filter,Print>
264264
(home,x,vs,vsc,syms,nsyms,bf,vvp);
265265
}

0 commit comments

Comments
 (0)