From 8f28ef26a08e826d0b0329fbe90258cb4e339506 Mon Sep 17 00:00:00 2001 From: qPCR4vir Date: Mon, 29 Jan 2018 00:37:40 +0100 Subject: [PATCH] Fix: boost enable directory_iterator C++11 range-base for statement --- include/nana/filesystem/filesystem.hpp | 47 +++++++++++++++++++++----- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/include/nana/filesystem/filesystem.hpp b/include/nana/filesystem/filesystem.hpp index 40fc05de..ab90a584 100644 --- a/include/nana/filesystem/filesystem.hpp +++ b/include/nana/filesystem/filesystem.hpp @@ -55,6 +55,37 @@ #define NANA_USING_BOOST_FILESYSTEM 1 # include # include +// dont include generic_u8string +// http://www.boost.org/doc/libs/1_66_0/boost/filesystem/path.hpp +// enable directory_iterator C++11 range-base for +// http://www.boost.org/doc/libs/1_66_0/boost/filesystem/operations.hpp +// but travis come with an oooold version of boost +// NOT enable directory_iterator C++11 range-base for +// http://www.boost.org/doc/libs/1_54_0/boost/filesystem/operations.hpp +namespace boost +{ + namespace filesystem + { + + // enable directory_iterator C++11 range-base for statement use --------------------// + + // begin() and end() are only used by a range-based for statement in the context of + // auto - thus the top-level const is stripped - so returning const is harmless and + // emphasizes begin() is just a pass through. + inline + const directory_iterator& begin(const directory_iterator& iter) BOOST_NOEXCEPT + { + return iter; + } + inline + directory_iterator end(const directory_iterator&) BOOST_NOEXCEPT + { + return directory_iterator(); + } + + } // namespace filesystem +} + // add boost::filesystem into std::experimental::filesystem namespace std { @@ -76,15 +107,15 @@ namespace std { unknown = boost::filesystem::file_type::type_unknown, }; /// enable directory_iterator range-based for statements - inline directory_iterator begin(directory_iterator iter) noexcept - { - return iter; - } + //inline directory_iterator begin(directory_iterator iter) noexcept + //{ + // return iter; + //} - inline directory_iterator end(const directory_iterator&) noexcept - { - return {}; - } + //inline directory_iterator end(const directory_iterator&) noexcept + //{ + // return {}; + //} } // filesystem } // experimental } // std