Ich teste eine Struktur, die ich für Vorlagenbedingungen verwenden möchte, aber ich habe einige seltsame Compilerfehler. Hier ist mein Code:bool und sizeof bedingte Vorlage
#include <type_traits>
#include <string>
template<typename T1, typename T2,
bool SAME_SIZE = (sizeof(T1)==sizeof(T2))>
struct same_size
{
typedef typename std::false_type value;
};
template<typename T1, typename T2>
struct same_size<T1, T2, true>
{
typedef typename std::true_type value;
};
int main()
{
if(same_size<char,unsigned char>::value)
{
printf("yes");
}
system("PAUSE");
}
ich kompilieren dies in Visual Studio 2015. Dies sind die Compiler-Fehler erhalte ich:
1> main.cpp
1>c:\users\luis\documents\visual studio 2015\projects\stringtype\stringtype\main.cpp(18): error C2059: syntax error: ')'
1>c:\users\luis\documents\visual studio 2015\projects\stringtype\stringtype\main.cpp(19): error C2143: syntax error: missing ';' before '{'
Kann jemand etwas Licht, was hier vor sich geht?
Es gibt keine Notwendigkeit für diese Typnamen in den 'typedef's. Eine andere Möglichkeit, Ihren Fehler zu beheben, ist es, 'value' -' if (same_size :: value {}) 'zu instanziieren, aber die Antwort von Sergey ist der richtige Weg, um dies zu beheben. –
Praetorian