COIN-OR::LEMON - Graph Library

Changeset 144:4e626dbbe408 in lemon for lemon


Ignore:
Timestamp:
04/22/08 13:50:52 (16 years ago)
Author:
Balazs Dezso <deba@…>
Branch:
default
Phase:
public
Message:

MSVC 2005 compatible path structure (ticket #87)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/path.h

    r100 r144  
    904904
    905905    template <typename Path, typename Enable = void>
    906     struct RevTagIndicator {
     906    struct RevPathTagIndicator {
    907907      static const bool value = false;
    908908    };
    909909
    910     template <typename Digraph>
    911     struct RevTagIndicator<
    912       Digraph,
    913       typename enable_if<typename Digraph::RevTag, void>::type
     910    template <typename Path>
     911    struct RevPathTagIndicator<
     912      Path,
     913      typename enable_if<typename Path::RevPathTag, void>::type
     914      > {
     915      static const bool value = true;
     916    };
     917
     918    template <typename Path, typename Enable = void>
     919    struct BuildTagIndicator {
     920      static const bool value = false;
     921    };
     922
     923    template <typename Path>
     924    struct BuildTagIndicator<
     925      Path,
     926      typename enable_if<typename Path::BuildTag, void>::type
    914927    > {
    915928      static const bool value = true;
     
    917930
    918931    template <typename Target, typename Source,
    919               typename BuildEnable = void, typename RevEnable = void>
     932              bool buildEnable = BuildTagIndicator<Target>::value,
     933              bool revEnable = RevPathTagIndicator<Source>::value>
    920934    struct PathCopySelector {
    921935      static void copy(Target& target, const Source& source) {
     
    927941    };
    928942
    929     template <typename Target, typename Source, typename BuildEnable>
    930     struct PathCopySelector<
    931       Target, Source, BuildEnable,
    932       typename enable_if<typename Source::RevPathTag, void>::type> {
     943    template <typename Target, typename Source>
     944    struct PathCopySelector<Target, Source, false, true> {
    933945      static void copy(Target& target, const Source& source) {
    934946        target.clear();
     
    939951    };
    940952
    941     template <typename Target, typename Source, typename RevEnable>
    942     struct PathCopySelector<
    943       Target, Source,
    944       typename enable_if<typename Target::BuildTag, void>::type, RevEnable> {
     953    template <typename Target, typename Source>
     954    struct PathCopySelector<Target, Source, true, false> {
    945955      static void copy(Target& target, const Source& source) {
    946956        target.clear();
     
    950960
    951961    template <typename Target, typename Source>
    952     struct PathCopySelector<
    953       Target, Source,
    954       typename enable_if<typename Target::BuildTag, void>::type,
    955       typename enable_if<typename Source::RevPathTag, void>::type> {
     962    struct PathCopySelector<Target, Source, true, true> {
    956963      static void copy(Target& target, const Source& source) {
    957964        target.clear();
Note: See TracChangeset for help on using the changeset viewer.