2016-11-03 7 views
0

Ich versuche, den WebRTC-Code in Visual Studio zu kompilieren und haben gegen diesen Fehler (von type_traits.h) gestartet. Der Code ist:Compiler Fehler C2228 in Visual Studio 2015

// Determines if the given class has zero-argument .data() and .size() methods 
// whose return values are convertible to T* and size_t, respectively. 
template <typename DS, typename T> 
class HasDataAndSize { 
private: 
    template < 
    typename C, 
    typename std::enable_if< 
    std::is_convertible<decltype(std::declval<C>().data()), T*>::value && 
    std::is_convertible<decltype(std::declval<C>().size()), std::size_t>::value>::type* = nullptr> 
    static int Test(int); 

    template <typename> 
    static char Test(...); 

public: 
    static constexpr bool value = std::is_same<decltype(Test<DS>(0)), int>::value; 
}; 

Der Fehler ist:

Fehler C2228 links von '.data' muss Klasse/Struktur/Union

  • haben Wie kann ich diese Vorlage neu schreiben, so dass es kompiliert mit dem Visual Studio 2015 Compiler?
+0

Wie haben Sie oder (webrtc) diese Klasse verwendet? Wo der Fehler auftritt? –

+0

Einfach den genauen Code einfügen (und '#include ' hinzufügen) kompiliert in VS2015 gut. Vielleicht stört dich ein anderer Code? – KompjoeFriek

+0

Was könnte das tun? Einige Compileroptionen? – Sean

Antwort

0

Update von Visual Studio 2015 zu Update 3 löste dieses Problem.