Why does Apple clang++ not support std::ifstream?

Viewed 134

I have a very simple, quite standard piece of C++, which I can compile fine using g++1, but which Apple clang++2 is unable to compile:

#include <fstream>

int main() {
    std::ifstream file("test.cpp");
    return 0;
}
$ clang++ -o test test.cpp

Undefined symbols for architecture x86_64:
  "std::__1::basic_filebuf<char, std::__1::char_traits<char> >::open(char const*, unsigned int)", referenced from:
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::basic_ifstream(char const*, unsigned int) in test-2f8096.o
  "std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf()", referenced from:
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::basic_ifstream(char const*, unsigned int) in test-2f8096.o
  "std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf()", referenced from:
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::basic_ifstream(char const*, unsigned int) in test-2f8096.o
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::~basic_ifstream() in test-2f8096.o
  "VTT for std::__1::basic_ifstream<char, std::__1::char_traits<char> >", referenced from:
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::basic_ifstream(char const*, unsigned int) in test-2f8096.o
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::~basic_ifstream() in test-2f8096.o
  "vtable for std::__1::basic_ifstream<char, std::__1::char_traits<char> >", referenced from:
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::basic_ifstream(char const*, unsigned int) in test-2f8096.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

I can't see why Apple clang++ would have difficulty with this piece of code as it uses nothing outside the standard library.

1: g++ version: Homebrew GCC 11.2.0_3
2: clang++ version: Apple clang version 13.1.6


EDIT: This has been resolved by factory resetting the computer this was on (for other reasons). It was probably a configuration error.

0 Answers
Related