Seite 1 von 1

C++ Ranges fail mit Clang Compiler

Verfasst: 18.09.2022, 22:45
von Matthias Gubisch
Hallo Leute

ich brauche mal euer Schwarmwissen...

Ich habe ein relativ simples Stück Code:

Code: Alles auswählen

#include <ranges>
#include <unordered_map>
#include <cstdint>
#include <vector>
#include <string>

int main() {
    std::unordered_map<std::string, uint32_t> m;    

    auto kv = std::views::values(m);
	std::vector<uint32_t> flat_meshes{ kv.begin(), kv.end() };

}
Das baut unter VS2022 sowohl mit MSVC als auch mit dem Integrierten Clang (14), es baut auch mit gcc (12.2)
Es baut aber nicht unter Linux mit Clang.

Hier ein Godbolt Link in dem man die Fehlermeldung schön sehen kann:
https://godbolt.org/z/rnjjdTznn

Soweit ich das sehe sollten Ranges spätestens mit Clang 15.0 vollständig supported sein.
Hat jemand eine Idee warum das unter Windows mit der gleichen Clang Version baut, unter Linux aber nicht?

Re: C++ Ranges fail mit Clang Compiler

Verfasst: 19.09.2022, 17:55
von Lord Delvin
Mal die ganz blöde Frage: Welche clang version steckt in deinem Buildcontainer? Auf meinem Rechner wäre das das hier:

Code: Alles auswählen

$ aptitude show clang
Package: clang                           
Version: 1:10.0-50~exp1
...

Re: C++ Ranges fail mit Clang Compiler

Verfasst: 19.09.2022, 17:59
von Matthias Gubisch
Alle builds nutzen Clang 14
Zumindest sofern ich dem configure output von cmake glauben darf...

Im godbolt link ist glaub ich clang-15 eingestellt, war zum testen, die errors sind mit 14 aber die gleichen

Re: C++ Ranges fail mit Clang Compiler

Verfasst: 25.09.2022, 17:34
von Matthias Gubisch
Mittlerweile bin ich etwas schlauer was das Problem betrifft
Das scheint ein Bug in Clang zu sein.

https://github.com/llvm/llvm-project/issues/52696

Und angeblich ist der seit 2 Tagen gefixed.

Die Frage warum der mit VS mitgelieferte Clang unter Windows baut bleibt aber...

Re: C++ Ranges fail mit Clang Compiler

Verfasst: 27.09.2022, 18:36
von dot
Matthias Gubisch hat geschrieben: 25.09.2022, 17:34Die Frage warum der mit VS mitgelieferte Clang unter Windows baut bleibt aber...
Unter Windows verwendet clang standardmäßig afaik die MSVC stdlib und nicht libstdc++…