/* * Copyright (c) 2016 - present Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ #include "siof_types.h" extern SomeTemplatedNonPODObject<int> extern_global_object; SomeTemplatedNonPODObject<int> global_object; template <typename T> struct SomeOtherTemplatedNonPODObject { SomeOtherTemplatedNonPODObject() { global_object.some_method(); // OK, same translation unit extern_global_object.some_method(); // bad, different translation unit }; SomeOtherTemplatedNonPODObject(int i) { global_object.some_method(); // OK, same translation unit }; }; SomeOtherTemplatedNonPODObject<bool> another_templated_global_object; // SIOF! SomeOtherTemplatedNonPODObject<bool> another_templated_global_object2( access_to_non_pod()); // SIOF! SomeOtherTemplatedNonPODObject<bool> another_templated_global_object3( access_to_templated_non_pod()); // SIOF! SomeOtherTemplatedNonPODObject<bool> another_templated_global_object4(42); // OK