Используйте HorizontalAlignment и свойства макета VerticalAlignment . Они управляют, как элемент использует пространство, которое он имеет в его родителе, когда больше комнаты доступно, чем требуемый элементом.
ширина StackPanel, например, будет так же широка как самый широкий элемент, который она содержит. Так, все более узкие элементы имеют немного избыточного пространства. Свойства выравнивания управляют тем, что дочерний элемент делает с дополнительным пространством.
значение по умолчанию для обоих свойств является Фрагментом, таким образом, дочерний элемент расширяется для заполнения всего свободного места. Дополнительные опции включают Левый, Центральный и прямо для HorizontalAlignment и Вершина, Центр и Нижняя часть для VerticalAlignment.
Спасибо за ответ Дэйву.
Я добавил свои тесты к этому примеру:
pastebin.com/f7c8ca0d6
Любопытно, что это показывает, что не выполняются все типы исключений, кроме NRVO!
Изменить: На самом деле я полагаю, это потому, что это единственный тест, в котором объект когда-либо имеет имя.
Я также пробовал другие типы STL и получил тот же результат. Однако, когда я пробую свои собственные типы, отличные от стручков, он работает, как ожидалось. Я не могу понять, что особенного в типах STL, которые могут вызывать это, поэтому я не знаю, что еще попробовать.
Я отправлю отчет об ошибке.
Изменить: Представлено здесь
Спасибо
Хм.
Похоже, что если вы измените конструктор данных
MoveableClass::MoveableClass(std::vector<double> data)
, чтобы он принимал вектор по ссылке, например,
MoveableClass::MoveableClass(const std::vector<double>& data)
, он отлично работает! Почему не работает, если передать вектор по значению?
Также вот версия, которая должна компилироваться в более ранних версиях MSVC, если кто-то хочет запустить тест там. Он не содержит функций C ++ 0x: http://pastebin.com/f3bcb6ed1
Возможно, было бы неплохо обновить и сохранить этот пример из cpp-next с версией вашего теста, которая не прошла, поэтому может быть один всеобъемлющий канонический тест.