mirror of
https://github.com/boostorg/filesystem.git
synced 2025-05-11 21:24:12 +00:00
This fixes hard compilation error when the passed type is not an iterator at all. As a result, path constructors from iterators are no longer selected by the compiler in overload resolution in users' code, when the caller is passing an initializer list with a pair of non-iterator elements. Added a test for this fix. Also, use integral_constant to implement boolean type traits. Fixes https://github.com/boostorg/filesystem/issues/287.
41 lines
855 B
C++
41 lines
855 B
C++
// Copyright 2023 Andrey Semashev.
|
|
//
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
//
|
|
// See accompanying file LICENSE_1_0.txt or copy at
|
|
// http://www.boost.org/LICENSE_1_0.txt
|
|
//
|
|
// The test verifies that \c boost::filesystem::path constructors
|
|
// from iterators don't interfere with initializer list constructor.
|
|
//
|
|
// https://github.com/boostorg/filesystem/issues/287
|
|
|
|
#include <boost/filesystem/path.hpp>
|
|
#include <boost/config.hpp>
|
|
|
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
|
|
#include <initializer_list>
|
|
|
|
void test(std::initializer_list< boost::filesystem::path > paths)
|
|
{
|
|
}
|
|
|
|
void test(boost::filesystem::path const& path)
|
|
{
|
|
}
|
|
|
|
int main()
|
|
{
|
|
boost::filesystem::path a, b;
|
|
test({a, b});
|
|
}
|
|
|
|
#else // !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
|
|
|
int main()
|
|
{
|
|
}
|
|
|
|
#endif // !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|