Pertanyaan yang diberi tag «constexpr»

constexpr adalah pengubah yang diperkenalkan di C ++ 11, yang menginformasikan compiler bahwa nilai dari suatu fungsi atau variabel diketahui atau dapat dihitung pada waktu kompilasi. Dengan demikian, ini dapat digunakan sebagai konstanta di tempat-tempat yang sebaliknya tidak mungkin terjadi.


14
Kapan Anda harus menggunakan kemampuan constexpr di C ++ 11?
Tampak bagi saya bahwa memiliki "fungsi yang selalu mengembalikan 5" adalah memecah atau melemahkan arti "memanggil fungsi". Pasti ada alasan, atau kebutuhan untuk kemampuan ini atau itu tidak akan ada di C ++ 11. Kenapa disana? // preprocessor. #define MEANING_OF_LIFE 42 // constants: const int MeaningOfLife = 42; // constexpr-function: …
337 c++  c++11  constexpr 



6
Referensi yang tidak terdefinisi ke char static constexpr []
Saya ingin memiliki static const chararray di kelas saya. GCC mengeluh dan mengatakan kepada saya bahwa saya harus menggunakan constexpr, meskipun sekarang memberitahu saya itu referensi yang tidak ditentukan. Jika saya membuat array menjadi non-anggota maka kompilasi. Apa yang sedang terjadi? // .hpp struct foo { void bar(); static constexpr …

4
Apakah mungkin menggunakan std :: string dalam constexpr?
Menggunakan C ++ 11, Ubuntu 14.04, GCC toolchain default . Kode ini gagal: constexpr std::string constString = "constString"; error: tipe 'const string {alias const std :: basic_string}' dari variabel constexpr 'constString' tidak literal ... karena ... 'std :: basic_string' memiliki destruktor non-sepele Apakah mungkin untuk digunakan std::stringdalam constexpr? (ternyata tidak …

2
Apakah constexpr menyiratkan sebaris?
Pertimbangkan fungsi sebaris berikut: // Inline specifier version #include<iostream> #include<cstdlib> inline int f(const int x); inline int f(const int x) { return 2*x; } int main(int argc, char* argv[]) { return f(std::atoi(argv[1])); } dan versi yang setara dengan constexpr: // Constexpr specifier version #include<iostream> #include<cstdlib> constexpr int f(const int x); …

2
Apa yang dimaksud dengan "meracuni suatu fungsi" di C ++?
Di akhir ceramah Scott Schurr "Memperkenalkanconstexpr " di CppCon , dia bertanya "Apakah ada cara untuk meracuni suatu fungsi"? Dia kemudian menjelaskan bahwa ini dapat dilakukan (meskipun dengan cara yang tidak standar) dengan: Menempatkan a throw dalam suatu constexprfungsi Menyatakan belum terselesaikan extern const char* Mereferensikan yang belum terselesaikan externdithrow …
96 c++  constexpr 

6
Menghitung panjang string C pada waktu kompilasi. Apakah ini benar-benar sebuah constexpr?
Saya mencoba menghitung panjang string literal pada waktu kompilasi. Untuk melakukannya, saya menggunakan kode berikut: #include <cstdio> int constexpr length(const char* str) { return *str ? 1 + length(str + 1) : 0; } int main() { printf("%d %d", length("abcd"), length("abcdefgh")); } Semuanya bekerja seperti yang diharapkan, program mencetak 4 …

3
Constexpr vs makro
Di mana saya harus memilih menggunakan makro dan di mana saya harus memilih constexpr ? Bukankah pada dasarnya mereka sama? #define MAX_HEIGHT 720 vs. constexpr unsigned int max_height = 720;
92 c++  c++11  macros  constexpr 

3
Bagaimana saya bisa mendapatkan kedalaman std :: vektor multidimensi pada waktu kompilasi?
Saya memiliki fungsi yang mengambil multidimensi std::vectordan membutuhkan kedalaman (atau jumlah dimensi) untuk dilewatkan sebagai parameter templat. Alih-alih hardcoding nilai ini saya ingin menulis constexprfungsi yang akan mengambil std::vectordan mengembalikan kedalaman sebagai unsigned integernilai. Sebagai contoh: std::vector<std::vector<std::vector<int>>> v = { { { 0, 1}, { 2, 3 } }, { …



1
std :: pair <auto, auto> ketik kembali
Aku sedang bermain-main dengan autodi std::pair. Dalam kode di bawah ini, fungsi fseharusnya mengembalikan std::pairtipe yang bergantung pada parameter templat. Contoh kerja: CONTOH 1 template &lt;unsigned S&gt; auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr (S == 2) return std::pair{1.0, …

2
Mengapa std :: swap bertanda constexpr sebelum C ++ 20?
Di C ++ 20, std::swapmenjadi constexprfungsi. Saya tahu bahwa perpustakaan standar benar-benar tertinggal di belakang bahasa dalam menandai hal-hal constexpr, tetapi pada 2017, &lt;algorithm&gt;cukup banyak constexpr seperti banyak hal lainnya. Namun - std::swaptidak. Samar-samar saya ingat ada beberapa cacat bahasa aneh yang mencegah penandaan itu, tapi saya lupa detailnya. Adakah …

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.