#ifndef VCZH_COLLECTIONS_OPERATIONSET
#define VCZH_COLLECTIONS_OPERATIONSET
#include "OperationEnumerable.h"
#include "OperationConcat.h"
#include "OperationSequence.h"
namespace
{
namespace
{
template
<
typename
,
bool
>
class
IntersectExceptEnumerator
:
public
virtual
<
>
{
protected
:
<
>*
;
<
>
;
;
public
:
IntersectExceptEnumerator
(
<
>*
,
const
<
>&
)
:enumerator(
)
,index(-
1
)
{
(
,
);
}
IntersectExceptEnumerator
(
const
IntersectExceptEnumerator
&
)
{
=
.
->
();
(
,
.
);
=
.
;
}
~
IntersectExceptEnumerator
()
{
delete
;
}
<
>*
()
const
override
{
return
new
IntersectExceptEnumerator
(*
this
);
}
const
&
()
const
override
{
return
->
();
}
()
const
override
{
return
;
}
bool
()
override
{
while
(
->
())
{
if
(
<
>::
(
,
->
())==
)
{
++;
return
true
;
}
}
return
false
;
}
void
()
override
{
->
();
=-
1
;
}
};
}
}
#endif