1
所以我寫這個代碼 - >編譯器傳遞一個常量變量時返回一個錯誤:模板參數不是一個常量表達式
#include <iostream>
#include <bitset>
int main(){
int num, temp, digits = 0;
std::cin >> num;
temp = num;
while(temp){
temp /= 10;
++digits;
}
const int size = digits;
std::bitset<size> a(num);
std::cout << a << std::endl;
return 0;
}
位集容器心不是接受const的整數大小作爲參數,並引發錯誤 - Non-type template argument is not a constant expression
。我想知道爲什麼會發生這種情況,因爲size已被聲明爲常量,並且在我的程序運行期間它的值不會改變?
[Constexpr \'和\'const \'之間的區別](https://stackoverflow.com/questions/14116003/difference-between-constexpr-and-const) – LogicStuff
改爲使用'constexpr' const的大小。您也可以將計算大小的代碼放在'constexpr'函數中。 –