D
david.baird
I have 3 classes, 1 which does not use templates, CGood, and 2 which
do use templates, CBad, and COkay. I believe that all of them should
work, but only CGood and COkay are working for me. CBad fails to
compile.
class CGood
{
public:
typedef int arr_t[2];
static const arr_t bar;
};
const CGood::arr_t CGood::bar = { 1, 2 };
template <class T>
class CBad
{
public:
typedef T arr_t[2];
static const arr_t bar;
};
template <class T>
// g++ says ``error: expected initializer before 'CBad''':
const CBad<T>::arr_t CBad<T>::bar = { 1, 2 };
template <class T>
class COkay
{
public:
typedef T arr_t[2];
static const arr_t bar;
};
template <class T>
const T COkay<T>::bar[2] = { 1, 2 };
Can anyone tell me if there is something is wrong (or right) with
CBad? It seems fine to me, but the compiler just doesn't like it.
If it is helpful, here is my g++ version:
$ g++ --version
g++ (GCC) 4.1.1 (Gentoo 4.1.1-r3)
do use templates, CBad, and COkay. I believe that all of them should
work, but only CGood and COkay are working for me. CBad fails to
compile.
class CGood
{
public:
typedef int arr_t[2];
static const arr_t bar;
};
const CGood::arr_t CGood::bar = { 1, 2 };
template <class T>
class CBad
{
public:
typedef T arr_t[2];
static const arr_t bar;
};
template <class T>
// g++ says ``error: expected initializer before 'CBad''':
const CBad<T>::arr_t CBad<T>::bar = { 1, 2 };
template <class T>
class COkay
{
public:
typedef T arr_t[2];
static const arr_t bar;
};
template <class T>
const T COkay<T>::bar[2] = { 1, 2 };
Can anyone tell me if there is something is wrong (or right) with
CBad? It seems fine to me, but the compiler just doesn't like it.
If it is helpful, here is my g++ version:
$ g++ --version
g++ (GCC) 4.1.1 (Gentoo 4.1.1-r3)