如果我將float
號碼傳遞給期望int
以下代碼的類,我希望得到編譯器錯誤。下面的代碼用gcc 4.9.3運行在編譯時使用模板驗證類型
gcc -std=c++98 -O0 -g3 -Wall -Wextra -c -fmessage-length=0
我應該如何改變這樣它會返回編譯錯誤的情況下,不同類型中的類實例的類型和方法的輸入參數類型的代碼?
#include <iostream>
template <typename T>
class CheckValidity {
public:
CheckValidity(){};
T isFoo(T variable)
{
T result = static_cast<T>(0);
if (variable > static_cast<T>(5))
{
result = static_cast<T>(1);
}
return result;
};
};
int main() {
CheckValidity<int> checkValidityInt;
std::cout << checkValidityInt.isFoo(6.0f) << std::endl;
return 0;
}
-std = C++ 98是一個很難的要求,或者你可以使用更高的標準嗎?某種'typename std :: enable_if'-magic應該可以做到這一點,但我不確定它是否可用於C++ 98。 – Kent
@Kent,我可以使用,直到C++ 03標準。不幸的是,我的嵌入式編譯器不支持那麼多。 – Eagle