cpp17_headers icon indicating copy to clipboard operation
cpp17_headers copied to clipboard

in_place_t / in_place_type / etc. failing to compile

Open madscientist opened this issue 8 years ago • 0 comments

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{};
                              ^

madscientist avatar Dec 11 '16 22:12 madscientist