Can wirtualne funkcje, takie jak X::f()
w poniższym kodzieCzy funkcje wirtualne mogą być constexpr?
struct X
{
constexpr virtual int f() const
{
return 0;
}
};
być constexpr
?
Can wirtualne funkcje, takie jak X::f()
w poniższym kodzieCzy funkcje wirtualne mogą być constexpr?
struct X
{
constexpr virtual int f() const
{
return 0;
}
};
być constexpr
?
nr Z [dcl.constexpr]/3 (7.1.5 "The constexpr
specyfikatora")
Definicja
constexpr
funkcję spełnia następujące wymagania:- it nie będzie wirtualny
To jest dziwne, dla 'gcc wersji 4.9.2 20141101 (Red Hat 4.9.2-1) (GCC)' [to działa] (http://pastebin.com/gBRT31VG) – zaratustra
Tylko dlatego, że kompilator akceptuje coś nie robi ' T oznacza, że jest to dozwolone. –
Clang ++ nie akceptuje kodu w linku. –
Pomyśl o tym przez chwilę. Całkowicie pokonałoby to cel 'constexpr'. –
Taka hipotetyczna funkcja może być używana jako wyrażenie stałe tylko wtedy, gdy znany jest cały typ wywołującej instancji "X". Wymagałoby to w zasadzie języka do określenia "reguł dewizytyzacji". –
@ πάνταῥεῖ W D możesz wykonać funkcję kompilacji funkcji czasu z funkcjami wirtualnymi. Więc nie jest to nie do pomyślenia. –