Programowanie

40
Podejścia do działania SFINAE w C ++

Używam mocno funkcji SFINAE w projekcie i nie jestem pewien, czy istnieją jakieś różnice między następującymi dwoma podejściami (innymi niż styl): #include <cstdlib> #include <type_traits> #include <iostream> template <class T, class = std::enable_if_t<std::is_same_v<T,...

40
Dlaczego adresy argc i argv 12 bajtów są oddzielone?

Na swoim komputerze uruchomiłem następujący program (64-bitowy Intel z systemem Linux). #include <stdio.h> void test(int argc, char **argv) { printf("[test] Argc Pointer: %p\n", &argc); printf("[test] Argv Pointer: %p\n", &argv); } int main(int argc, char **argv) { printf("Argc...

40
Dlaczego 11010100 << 1 oznacza 110101000, a nie 10101000?

Dlaczego, kiedy próbuję przesunąć bity dla 11010100 2 , wynik to 110101000 2 , a nie 10101000 2 . int a = Integer.parseInt("11010100", 2) << 1; Próbuję to zrobić: int a = (byte)(Integer.parseInt("11010100", 2) << 1); Ale jeśli wartość wyjściowa jest większa niż 128, wszystko idzie w...

39
Czy jest jakaś szansa na napisanie „C-dur” zamiast „major C”?

W moim projekcie muzycznym napotkałem niewielki problem estetyczny i od pewnego czasu mnie to denerwuje. Mam typ data Key = C | D | ...i mogę zbudować Scalea Keyi a Mode. W Moderozróżnia np główną i mniejszą skalę. Mogę zdefiniować Modetyp jako funkcję od Keydo Scale. W takim przypadku tryby będą...

38
Dlaczego remove_reference nie działa na funkcje?

Wpadłem na coś dziwnego podczas wykonywania metaprogramowania szablonu innego dnia. Zasadniczo sprowadza się do tego twierdzenia, że ​​nie jest (jak się spodziewałbym) przemijanie. static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>); Na początku myślałem, że...

38
Programowanie meta szablonów

Czy ktoś może mi wyjaśnić, dlaczego pierwszy sposób metaprogramowania szablonów prowadzi do nieskończonej pętli, ale drugi działa poprawnie. #include <iostream> using namespace std; template<int N, int M> struct commondivs { static const int val = (N<M) ?...