Re: C++ расширение языка +1
От: Caracrist https://1pwd.org/
Дата: 08.07.10 06:09
Оценка:
Здравствуйте, Caracrist, Вы писали:

C>Скажу чего мне нехватает


4. initialize an array, in the initialization list of a constructor
class A
{
int arr[5];
A() :
arr[i]( (i > 2)?(arr[i-1]+arr[i-2]):1 ) // i represents compiletime const value, can be used as template parameter for example
{}
};
в случае с интом это конечно погоды не сделает,
а вот вызывать дефолтный коструктор у более сложных классов не всегда имеет смысл.
~~~~~
~lol~~
~~~ Single Password Solution
Re[2]: C++ расширение языка +1
От: Caracrist https://1pwd.org/
Дата: 08.07.10 06:41
Оценка:
Здравствуйте, Caracrist, Вы писали:

C>Здравствуйте, Caracrist, Вы писали:


C>>Скажу чего мне нехватает


C>4. initialize an array, in the initialization list of a constructor

C>class A
C>{
C> int arr[5];
C> A() :
C> arr[i]( (i > 2)?(arr[i-1]+arr[i-2]):1 ) // i represents compiletime const value, can be used as template parameter for example
C> {}
C>};
C>в случае с интом это конечно погоды не сделает,
C>а вот вызывать дефолтный коструктор у более сложных классов не всегда имеет смысл.


struct Pub
{
static const int dArr[4][i] = i * 2;
typedef int const (&TT)[3];
static TT t;
static TT t2;
};
Pub::TT Pub::t[j](j * j);
const int Pub::t2[4][_](t[_] * _ - 1);

~~~~~
~lol~~
~~~ Single Password Solution
Re[11]: C++ расширение языка
От: _nn_ www.nemerleweb.com
Дата: 08.07.10 09:42
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Есть какие-то специфические проблемы именно с noncopyable?

J>Я не помню, использовал ли я optional с noncopyable. Может, и есть какие проблемы.

Есть небольшая особенность, вызванная больше проблемой дизайна и как раз документированая.

struct x : boost::noncopyable
{
public:
    static void init(int i);
    
private:
    x(int i) : i (i) { }

    friend boost::in_place_factory1<int>;

    int i;
};

boost::optional<x> x_instance;

void x::init(int i)
{
        // x_instance.reset(new x(i));
    x_instance = boost::in_place(i);
}


В случае использования указателя, вызов new происходит в функции принадлежащей классу, и никаких друзей объявлять не приходится.
В случае с использованием in_place требуется указать всех друзей, конструкторов которых мы вызываем.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[12]: C++ расширение языка
От: B7_Ruslan  
Дата: 09.07.10 18:35
Оценка: :)
Когда С++ компиляторы научатся собирать всю информацию о типе — имя, функции и т.д.,
в том числе у инстанцированных шаблонов?
И чтобы функцию-член можно было вызвать в рантайме передав строку с ее названием.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.