cpp17_headers
cpp17_headers copied to clipboard
in_place_t / in_place_type / etc. failing to compile
I expect you're aware already but trying to compile test_all_includes.cpp with either clang 3.8 or g++ 5.4 or 6.2 gives errors about redefinitions of in_place* symbols:
[ 30%] Building CXX object test/CMakeFiles/test_all_includes.dir/test_all_includes.cpp.o
In file included from cpp17_headers/test/test_all_includes.cpp:12:0:
cpp17_headers/include/stx/variant.hpp:102:27: error: redefinition of 'struct stx::in_place_type_t<T>'
template <class T> struct in_place_type_t {
^~~~~~~~~~~~~~~
In file included from cpp17_headers/test/test_all_includes.cpp:6:0:
cpp17_headers/include/stx/optional.hpp:288:27: error: previous definition of 'struct stx::in_place_type_t<T>'
template <class T> struct in_place_type_t {
^~~~~~~~~~~~~~~
In file included from cpp17_headers/test/test_all_includes.cpp:12:0:
cpp17_headers/include/stx/variant.hpp:108:28: error: redefinition of 'struct stx::in_place_index_t<I>'
template <size_t I> struct in_place_index_t {
^~~~~~~~~~~~~~~~
In file included from cpp17_headers/test/test_all_includes.cpp:6:0:
cpp17_headers/include/stx/optional.hpp:293:28: error: previous definition of 'struct stx::in_place_index_t<I>'
template <size_t I> struct in_place_index_t {
^~~~~~~~~~~~~~~~
In clang we see:
[ 30%] Building CXX object test/CMakeFiles/test_all_includes.dir/test_all_includes.cpp.o
In file included from cpp17_headers/test/test_all_includes.cpp:12:
cpp17_headers/include/stx/variant.hpp:102:27: error:
redefinition of 'in_place_type_t'
template <class T> struct in_place_type_t {
^
cpp17_headers/include/stx/optional.hpp:288:27: note:
previous definition is here
template <class T> struct in_place_type_t {
^
In file included from cpp17_headers/test/test_all_includes.cpp:12:
cpp17_headers/include/stx/variant.hpp:106:30: error:
redefinition of 'in_place_type'
constexpr in_place_type_t<T> in_place_type{};
^
cpp17_headers/include/stx/optional.hpp:300:30: note:
previous definition is here
constexpr in_place_type_t<T> in_place_type{};
^
In file included from cpp17_headers/test/test_all_includes.cpp:12:
cpp17_headers/include/stx/variant.hpp:108:28: error:
redefinition of 'in_place_index_t'
template <size_t I> struct in_place_index_t {
^
cpp17_headers/include/stx/optional.hpp:293:28: note:
previous definition is here
template <size_t I> struct in_place_index_t {
^
In file included from cpp17_headers/test/test_all_includes.cpp:12:
cpp17_headers/include/stx/variant.hpp:112:31: error:
redefinition of 'in_place_index'
constexpr in_place_index_t<I> in_place_index{};
^
cpp17_headers/include/stx/optional.hpp:302:31: note:
previous definition is here
constexpr in_place_index_t<I> in_place_index{};
^