Re[8]: trick
От: Evgeny.Panasyuk Россия  
Дата: 01.10.15 13:40
Оценка:
EP>Видимо не очищается, а просто конструируется позже run_it, хотя по идее должен раньше (можно попробовать сделать тест с порядком вызова конструкторов).

Да, именно так и происходит:
#include <cstdio>

using namespace std;

struct First
{
    First()
    {
        printf("first\n");
    }
} first;

template<class T>
T run_it = T{};

void not_used()
{
    struct Second
    {
        Second()
        {
            printf("second\n");
        }
    };
    Second t = run_it<Second>;
}

int main()
{
}

// GCC:
first
second

// Clang:
second
first
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.