Na http://blogs.msdn.com/vcblog/archive/2010/04/06/c-0x-core-language-features-in-vc10-the-table.aspx znajduje się tabela przedstawiająca funkcje C++ 0x, które są implementowane w 2010 RC. Wśród nich są wyszczególnione nagłówki przesyłania i wyliczenia wyrażeń mocno napisanych, ale są one wymienione jako "częściowe". Główny tekst artykułu mówi, że oznacza to, że są one niekompletne lub wdrożone w jakiś niestandardowy sposób.forward/strong enum w VS2010
Więc mam VS2010RC i bawię się z funkcjami C++ 0x. Nie mogę wymyślić tych i nie mogę znaleźć żadnej dokumentacji na temat tych dwóch funkcji. Nawet najprostsze próby nie kompilują.
enum class E { test };
int main() {}
fails with:
1>e:\dev_workspace\experimental\2010_feature_assessment\2010_feature_assessment\main.cpp(518): error C2332: 'enum' : missing tag name
1>e:\dev_workspace\experimental\2010_feature_assessment\2010_feature_assessment\main.cpp(518): error C2236: unexpected 'class' 'E'. Did you forget a ';'?
1>e:\dev_workspace\experimental\2010_feature_assessment\2010_feature_assessment\main.cpp(518): error C3381: 'E' : assembly access specifiers are only available in code compiled with a /clr option
1>e:\dev_workspace\experimental\2010_feature_assessment\2010_feature_assessment\main.cpp(518): error C2143: syntax error : missing ';' before '}'
1>e:\dev_workspace\experimental\2010_feature_assessment\2010_feature_assessment\main.cpp(518): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
int main()
{
enum E : short;
}
Fails with:
1>e:\dev_workspace\experimental\2010_feature_assessment\2010_feature_assessment\main.cpp(513): warning C4480: nonstandard extension used: specifying underlying type for enum 'main::E'
1>e:\dev_workspace\experimental\2010_feature_assessment\2010_feature_assessment\main.cpp(513): error C2059: syntax error : ';'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Wygląda więc na to, że musi być jakiś zupełnie niestandardowa realizacja które pozwoliło im uzasadnić nazywając tę funkcję „częściowo” done. W jaki sposób mogę przepisać ten kod, aby uzyskać dostęp do funkcji przekazywania i typu silnego?
Niektóre dalsze informacje na temat nowych funkcji I 'm próby użycia:
silnie wpisane teksty stałe: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf
Forward deklaracja teksty stałe: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf
pamiętać, że są oddzielne programy testowe. E w drugim nie jest próbą przekazania deklaracji tego samego E co w pierwszym. –