Chciałbym sprawdzić, kiedy jeden z moich lekarzy zostanie wywołany ze znaną wartością kompilacji. Czy istnieje sposób, aby to wykryć?SFINAE: Wykrywanie, czy funkcja jest wywoływana przez znaną wartość czasu kompilacji
Więc kiedy ktoś nazwać:
A a (10);
od 10 to czas kompilacji znana stała, lubię nazywać specjalną konstruktor, tak:
template<int Value, typename = std::enable_if_t<Value <= 100>>
A (int Value) {}
Każdy pomysł w jaki sposób można rozwiązać ten przypadek? Dzięki!
Dzięki za pomysł, niestety tak nie jest. Naprawdę ważnym punktem mojej libacji jest to, że musi być tak łatwa w użyciu, jak proste typy pierwotne. Podobnie jak 99% programistów C++ nawet nie wie o integral_constant. – Melkon
To jest naprawdę bardzo dobre rozwiązanie, +1, a reszta 99% programistów C++ powinna się nauczyć o 'integral_constant' :) Zdecydowanie wybrałbym tę trasę, jeśli tego chcesz, po prostu testując wartości niektórych stałych podczas kompilacji czas. – vsoftco
@vsoftco W tym kontekście: Pracuję nad niezmienną biblioteką, która ma zastąpić znaki (lub inne typy kontroli) w oparciu o typy pierwotne i umieścić je w informacji o typie. Celem jest być tak prostym, jak prymitywne typy, ale tworzyć ładniejszy i bardziej wydajny kod. Ta integralna wersja jest miłym dodatkiem, ale moim celem jest optymalizacja rzeczy w milczeniu, bez konieczności myślenia o tym. Pewnie, niektórzy użyją integral_constant, ale większość nie, i szczerze mówiąc, jeśli będą musieli z niego korzystać, kod nie będzie ładniejszy, co chcę osiągnąć. – Melkon