Standart Dışı Davranış
Aşağıdaki bölümlerde, C++'ın Microsoft uygulamasının C++ standardına uymadığı bazı yerler listelanmaktadır. Aşağıda verilen bölüm numaraları, C++11 standardında (ISO/IEC 14882:2011(E)) bölüm numaralarına başvurur.
C++ standardında tanımlananlardan farklı derleyici sınırlarının listesi Derleyici Sınırları'nda verilmiştir.
Birlikte Değişken Dönüş Türleri
Sanal işlevde bağımsız değişkenlerin bir değişken sayısı olduğunda, sanal taban sınıfları birlikte değişken dönüş türleri olarak desteklenmez. Bu, C++11 ISO belirtiminin 7. paragrafı olan bölüm 10.3 ile uyumlu değildir. Aşağıdaki örnek derlenemez; derleyici hatası C2688 oluşturur:
// CovariantReturn.cpp
class A
{
virtual A* f(int c, ...); // remove ...
};
class B : virtual A
{
B* f(int c, ...); // C2688 remove ...
};
Şablonlarda Bağımlı Olmayan Adları Bağlama
Microsoft C++ derleyicisi şu anda başlangıçta bir şablonu ayrıştırırken bağımsız adları bağlamayı desteklememektedir. Bu, C++11 ISO belirtiminin 14.6.3 bölümüne uymaz. Bu, şablonun görülmesinden sonra (ancak şablon örneği oluşturulmadan önce) aşırı yüklerin bildirilmesine neden olabilir.
#include <iostream>
using namespace std;
namespace N {
void f(int) { cout << "f(int)" << endl;}
}
template <class T> void g(T) {
N::f('a'); // calls f(char), should call f(int)
}
namespace N {
void f(char) { cout << "f(char)" << endl;}
}
int main() {
g('c');
}
// Output: f(char)
İşlev Özel Durum Belirleyicileri.
dışındaki throw()
işlev özel durum tanımlayıcıları ayrıştırılır ancak kullanılmaz. Bu, ISO C++11 belirtiminin 15.4 bölümüne uymaz. Örneğin:
void f() throw(int); // parsed but not used
void g() throw(); // parsed and used
Özel durum belirtimleri hakkında daha fazla bilgi için bkz . Özel Durum Belirtimleri.
char_traits::eof()
C++ standardı, char_traits::eof değerinin geçerli char_type
bir değere karşılık olmaması gerektiğini belirtir. Microsoft C++ derleyicisi bu kısıtlamayı türü char
için zorlar, ancak türü wchar_t
için zorlamaz. Bu, C++11 ISO belirtiminin 12.1.1 bölümündeki Tablo 62'deki gereksinime uygun değildir. Aşağıdaki örnekte bu davranış gösterilmektedir.
#include <iostream>
int main()
{
using namespace std;
char_traits<char>::int_type int2 = char_traits<char>::eof();
cout << "The eof marker for char_traits<char> is: " << int2 << endl;
char_traits<wchar_t>::int_type int3 = char_traits<wchar_t>::eof();
cout << "The eof marker for char_traits<wchar_t> is: " << int3 << endl;
}
Nesnelerin Depolama Konumu
C++ standardı (bölüm 1.8 paragraph 6) tam C++ nesnelerinin benzersiz konumlara sahip olmasını gerektirir. Ancak Microsoft C++ ile veri üyesi olmayan türlerin nesnenin ömrü boyunca depolama konumunu diğer türlerle paylaşacağı durumlar vardır.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin