Баг? Не поделили временный объект
От: Caracrist https://1pwd.org/
Дата: 29.03.10 09:27
Оценка: :)
Решил вынести отдельной темой отсюда: http://www.rsdn.ru/forum/cpp/3753238.1.aspx
Автор: Caracrist
Дата: 29.03.10


Вот код:
struct tracer
{
    tracer()
    {
        cout << __FUNCTION__ << endl;
    }

    tracer(tracer const&)
    {
        cout << __FUNCTION__ << endl;
    }

    ~tracer()
    {
        cout << __FUNCTION__ << endl;
    }
};
struct lock_
{
   lock_()
   {
        cout << __FUNCTION__ << endl;
   }
   lock_(tracer const&)
   {
        cout << __FUNCTION__ << endl;
   }
   ~lock_()
  {
        cout << __FUNCTION__ << endl;
  }
};
void lock(lock_ _){}
void foo(tracer t)
{
    cout << __FUNCTION__ << endl;
}

int main()
{
    tracer t;
    lock(t);
}


тест:
http://codepad.org/OVDUfnOS

Output:

tracer
lock_
~lock_
~lock_
~tracer


П.С. студия так не глючит
~~~~~
~lol~~
~~~ Single Password Solution
Re: Баг? Не поделили временный объект
От: ononim  
Дата: 29.03.10 09:36
Оценка:
C> lock_(tracer const&)
C> {
C> cout << __FUNCTION__ << endl;
C> }
Как много веселых ребят, и все делают велосипед...
Re: Баг? Не поделили временный объект
От: remark Россия http://www.1024cores.net/
Дата: 29.03.10 09:36
Оценка: 7 (2) +1
Здравствуйте, Caracrist, Вы писали:

C>Output:

C>

C>tracer
C>lock_
C>~lock_
C>~lock_
C>~tracer


Добавь вывод конструктора копирования lock.


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[2]: Баг? Не поделили временный объект
От: Caracrist https://1pwd.org/
Дата: 29.03.10 10:55
Оценка:
Здравствуйте, remark, Вы писали:

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


C>>Output:

C>>

C>>tracer
C>>lock_
C>>~lock_
C>>~lock_
C>>~tracer


R>Добавь вывод конструктора копирования lock.


R>


И это правильное поведение? Студия так не делает.
Вопрос: кто прав?
~~~~~
~lol~~
~~~ Single Password Solution
Re[3]: Баг? Не поделили временный объект
От: remark Россия http://www.1024cores.net/
Дата: 29.03.10 11:05
Оценка:
Здравствуйте, Caracrist, Вы писали:

C>И это правильное поведение? Студия так не делает.

C>Вопрос: кто прав?

Что именно?


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.