Skip to content

in_place_t / in_place_type / etc. failing to compile #4

Description

@madscientist

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions