2016-09-13 19 views
6
derleme gelen derleyiciler engeller nelerdir

bir static_assert için-init-deyimi deyimi için arasındayerleştirilir? Örneğinstatic_assert için-init-deyimi ifadesi için

:

for(static_assert(true, ""); false;); // error 
+1

Neden buna ihtiyacınız var? – Slava

+1

@Slava 'Dil-Avukat' etiketi wiki makalesi şöyle der: *“ Sorunuz başka bir şekilde pratik bir kullanıma sahip olmayabilir ”*. –

+0

@Slava'ya henüz ihtiyacınız yok. derleyiciler talep odaklı veya standart odaklı mı? – rahnema1

cevap

10

Grammatically. Bir for döngü:

for (init-statement; conditionopt ; expressionopt) statement 

bir init-ifadesi bir ; veya basit beyan ardından bir ifade ya olup. static_assert-declaration, o şeylerin hiçbiri değildir, dolayısıyla oraya gidemez.

+0

ancak static_assert bir bildirim – rahnema1

+3

@ rahnema1 Ama bu bir * basit beyan * değil. – Barry

+4

@ rahnema1 a 'static_assert' bir * blok-declaration * değil * basit beyan *. – NathanOliver