ulidtko
17.01.2012 17:28
http://ideone.com/6hMaM
чяднт, котаны.
> prog.cpp:24: error: invalid in-class initialization of static data member of non-integral type ‘uint16_t []’
> non-integral type ‘uint16_t []’
wtf?
А, кажется дошло. In-class initialization.
Ща вынесу за класс.
с каких пор массивы стали интегральными типами ?
бля, но как?
класс же анонимный ._.
ок, но я помню, что так инициализировать было точно возможно. Чяднт?
struct ololo {static uint16_t lut[256];}; static uint16_t ololo::lut = {...};
/3
> анонимный struct
статические члены внутри обьявления класса никогда нельзя было инициализировать
сделай неанонимным, еба
okay ._.
FAIL. Константные можно.
rly? ok.
не хочу, говно же. Мне только один инстанс нужен.
зачем тебе целая структура?
стандартная идиома функтора же
предлагаешь одной функцией, а lut внутри static?
why not?
На вот так http://ideone.com/11tRt
Можно как раз только интегральные статики, кхм. Именно статики.
>чяднт
Пишешь на C++
И да, "You can only have one definition of a static member in a program. Unnamed classes, classes contained within unnamed classes, and local classes cannot have static data members".
печалька, блджад :\
уходи, этот тред не для тебя.
анонимные неймспейсы сделают "почти" то же самое же. Хоть линковка и будет внтутренней, но сам неймспейс имитирует внешнюю, как статик.
ну, мне тут подойдёт и всё в одной функции. Локальность кода полущ, на расширяемость похуй, objdump -SD показывает только хорошее.
зачем вообще в структуру этот массив запихивать?
1) как я понимаю, нужно сделать массив константным
2) запихать в безымянный неймспейс или сделать статическим константным локальным массивом функции uint16_t gamma_decompress(uint8_t compressed_value);
3) создавать свои функторы не комильфо, потому что есть boost::function
то есть лишняя структура, а тем более безымянная тут не нужна.
да, я сделал 2)
в 2) два варианта, интересно какой?
второй, /23