Changeset 144:4e626dbbe408 in lemon-1.2 for lemon
- Timestamp:
- 04/22/08 13:50:52 (17 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/path.h
r100 r144 904 904 905 905 template <typename Path, typename Enable = void> 906 struct Rev TagIndicator {906 struct RevPathTagIndicator { 907 907 static const bool value = false; 908 908 }; 909 909 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 914 927 > { 915 928 static const bool value = true; … … 917 930 918 931 template <typename Target, typename Source, 919 typename BuildEnable = void, typename RevEnable = void> 932 bool buildEnable = BuildTagIndicator<Target>::value, 933 bool revEnable = RevPathTagIndicator<Source>::value> 920 934 struct PathCopySelector { 921 935 static void copy(Target& target, const Source& source) { … … 927 941 }; 928 942 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> { 933 945 static void copy(Target& target, const Source& source) { 934 946 target.clear(); … … 939 951 }; 940 952 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> { 945 955 static void copy(Target& target, const Source& source) { 946 956 target.clear(); … … 950 960 951 961 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> { 956 963 static void copy(Target& target, const Source& source) { 957 964 target.clear();
Note: See TracChangeset
for help on using the changeset viewer.