template<unsigned int n = 32>
class Int {
int value;
//...
};
how should i "force" the class to use, for instance, 16-bit int for Int<16>, etc.? does this even make sense?




Posted 17 November 2016 - 05:43 AM
template<unsigned int n = 32>
class Int {
int value;
//...
};
Posted 17 November 2016 - 07:44 AM
Posted 17 November 2016 - 08:21 AM
template<>
class Int<8> {
// ...
}
template<>
class Int<16> {
// ...
}
This post has been edited by bb8: 17 November 2016 - 08:26 AM
Posted 17 November 2016 - 08:32 AM
Int<int16_t> i;, your code would be okay, but i want to pass an int as parameter. in that case i can't write
template<unsinged int n>
class Int {
n anInteger;
}
This post has been edited by bb8: 17 November 2016 - 08:40 AM
Posted 17 November 2016 - 08:36 AM
#include <iostream>
using namespace std;
template <class T>
class Int {
T anInteger;
public:
Int(T x) : anInteger(x) {}
T getInt() { return anInteger; }
};
int main(int argc, const char * argv[]) {
int x = 55;
long y = 8446744073709551615;
cout << x << " " << y << endl;
Int<long> testLong(y);
Int<int> testInt(x);
cout << testInt.getInt() << " " << testLong.getInt() << endl;
return 0;
}
Int<typeof(y)> testLong(y); Int<typeof(x)> testInt(x);
This post has been edited by CTphpnwb: 17 November 2016 - 08:40 AM
Posted 17 November 2016 - 08:40 AM
This post has been edited by bb8: 17 November 2016 - 08:44 AM
Posted 17 November 2016 - 08:56 AM
template<unsigned int n> struct fixed_width_int;
template<> struct fixed_width_int<8> { typedef std::int8_t type; };
template<> struct fixed_width_int<16> { typedef std::int16_t type; };
template<> struct fixed_width_int<32> { typedef std::int32_t type; };
template<> struct fixed_width_int<64> { typedef std::int64_t type; };
template<unsigned int N>
class Int
{
typedef typename fixed_width_int<N>::type T;
T value;
};
This post has been edited by Peter O: 17 November 2016 - 08:57 AM
Posted 17 November 2016 - 08:56 AM
Posted 17 November 2016 - 08:59 AM
Quote
This post has been edited by jimblumberg: 17 November 2016 - 09:02 AM
Posted 17 November 2016 - 09:04 AM
