Code: Select all
#include
#include
template
struct IsSTDArray : std::false_type {};
template
struct IsSTDArray : std::true_type {};
int main() {
static_assert(IsSTDArray::value);
}
Ich gehe davon aus, dass GCC „technisch“ korrekt ist, oder?
Allerdings in meiner Template-Klasse:
Code: Select all
template
struct MyClass {};
MyClass my_class; // THIS WORKS
Interessanterweise können GCC und Clang keine vorzeichenlosen und vorzeichenbehafteten Nichtübereinstimmungen kompilieren (aber akzeptieren ganzzahlige Breitenunterschiede), aber MSVC akzeptiert sogar vorzeichenbehaftete und vorzeichenlose Nichtübereinstimmungen, daher denke ich, dass die Regeln in Bezug auf jeden Compiler völlig unterschiedlich sind.
Code: Select all
template
struct MyClass {};
MyClass my_class; // THIS WORKS ON MSVC BUT NOT ON CLANG AND GCC
Mobile version