f



qualified names in namespace member declarations

There is some previous discussion of this; but, I could not
find definitive and unanimous agreement and interpretation
of the standard.

namespace A {

     class A::SomeClass { } ;

     A::SomeClass A::some_func() ;
}

namespace A {

     A::SomeClass A::some_func() { return A::SomeClass() ; }
}

Which of the redundant A:: qualifications above are legal?
Is section 8.3 of the standard relevant? What other sections
bear on this question?

On our system, g++ and the Sun compiler allow the above while
the Intel compiler gives the "qualified name not allowed in
namespace member declaration" error discussed here a few
years back.

Finally, is it legal to define some_func without wrapping in
namespace A { } as one does for class member functions?

A::SomeClass A::some_func() { return A::SomeClass() ; }

Thanks in advance!

-- Keith -- Fraud 6

---
[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html                      ]

0
Keith
9/18/2006 10:45:02 PM
comp.std.c++ 2720 articles. 0 followers. Post Follow

4 Replies
293 Views

Similar Articles

[PageSpeed] 50

Keith H Duggar wrote:
> There is some previous discussion of this; but, I could not
> find definitive and unanimous agreement and interpretation
> of the standard.
>
> namespace A {
>
>      class A::SomeClass { } ;
>
>      A::SomeClass A::some_func() ;
> }
>
> namespace A {
>
>      A::SomeClass A::some_func() { return A::SomeClass() ; }
> }
>
> Which of the redundant A:: qualifications above are legal?
> Is section 8.3 of the standard relevant? What other sections
> bear on this question?

Neither of the "A::" qualifications are redundant; and both - being
unmatched - are illegal. �8.3 is relevant because it states that the
qualified name of a namespace can be used to refer that that namespace
only from outside of the named namespace. So whichever namespace (or
class) "A" is meant to refer to - it cannot be the enclosing A
namespace. And since no other namespace or class named "A" are anywhere
in evidence, the program is ill-formed.

> On our system, g++ and the Sun compiler allow the above while
> the Intel compiler gives the "qualified name not allowed in
> namespace member declaration" error discussed here a few
> years back.

I am happy to report that the gcc 4.01 compiler rejects these
declarations with the same error as the Intel compiler. So it appears
that the steady march of C++ compilers toward full compliance,
continues.

> Finally, is it legal to define some_func without wrapping in
> namespace A { } as one does for class member functions?
>
> A::SomeClass A::some_func() { return A::SomeClass() ; }

Consider this "corrected" version of the program above:

    namespace A
    {
        namespace A
        {
            class SomeClass;

            SomeClass some_func();
        }

        class A::SomeClass{ };

        A::SomeClass A::some_func()
        {
            return A::SomeClass();
        }
    }

This program is well-formed because the namespace "A" (along with its
"SomeClass" class and "some_func" function declarations) is present.

So the answer is "yes" - it is legal to define a function, class or
variable outside of its namespace (by providing the appropriate
qualifications.) But, as shown in the above example, there must always
be a matching, unqualified declaration within the namespace in order
for the external definition to be legal.

Greg


---
[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html                      ]

0
Greg
9/19/2006 9:29:06 AM
Greg Herlihy wrote:
>
> I am happy to report that the gcc 4.01 compiler rejects these
> declarations with the same error as the Intel compiler. So it appears
> that the steady march of C++ compilers toward full compliance,
> continues.
>

what about

namespace A {
     class SomeClass { } ;

     A::SomeClass some_func() ;
}

namespace A {
     A::SomeClass some_func() { return A::SomeClass(); }
} 

Comeau compile it.

---
[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html                      ]

0
Aleksey
9/21/2006 9:38:59 AM
Aleksey Loginov wrote:
> what about
>
> namespace A {
>      class SomeClass { } ;
>
>      A::SomeClass some_func() ;
> }
>
> namespace A {
>      A::SomeClass some_func() { return A::SomeClass(); }
> }
>
> Comeau compile it.

Good point. I should have limited my example to declarations and
function names - since other names, such as type names and variable
names can be namespace qualified anywhere. In fact, my answer should
have been to wait for C++0x. It appears that the Committee has decided
to drop 8.3's restriction and allow qualified names within their own
namespace.

http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#482

So from what I can tell, the original code will then be legal in the
future.

And as an editorial aside: I don't really see much benefit from this
decision. It seems to grant names in C++ an even greater potential for
ambiguity - and does so just for the convenience of the programmer
being able to type a longer name.

Greg

---
[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html                      ]

0
Greg
9/24/2006 12:55:50 PM
Greg Herlihy wrote:
> And as an editorial aside: I don't really see much benefit from this
> decision. It seems to grant names in C++ an even greater potential for
> ambiguity - and does so just for the convenience of the programmer
> being able to type a longer name.

Despite being a relative outsider, it is difficult for me to refrain
from adding my two cents' worth to this one.

Con:
* It is not clear to me whether any existing code will break - in
particular, code in which class or namespace is declared inside a
namespace of the same name.  Name lookup from the innermost namespace
to the outermost may resolve this ambiguity correctly in all cases -
something the experts have probably looked into.

Pro:
* The rule for disambiguating any name qualification name should become
uniform for all contexts.  Most importantly, the rule will be intuitive
and easily remembered.
* The change would bring the treatment of qualified names for
namespaces and classes closer together.  Ideally, I would like to see
class declarations being defined as generating a namespace with the
same name, and that all name qualification refers to namespace names
only.

I remember a discussion in this group relating to injected class names
that may make the latter point less applicable, though I am unsure of
this.  I would prefer "injected" to mean that a class (or namespace)
name used as the first component in a qualified name is visible by
virtue of searching outwards through nested namespaces/classes, rather
than that it is in effect redeclared as nested inside its own scope.

---
[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html                      ]

0
Manfred
9/28/2006 2:48:16 PM
Reply:

Similar Artilces:

Is qualified name allowed in member declaration?
In the following code: struct A { void A::func() {} }; Isn't it valid to declare the member as a qualified name, as A::func, within scope of A? However I get "error: qualified name is not allowed in member declaration" when using Comeau (online version 4.3.3) compiler? Isn't that 3.4.3.1 allow a class member to be referred to using a qualified-id at any point in its scope? -Ganesh --- [ comp.std.c++ is moderated. To submit articles, try just posting with ] [ your news-reader. If that fails, use mailto:std-c++@ncar.ucar.edu ] [ --- Please see the FAQ before posting. --- ] [ FAQ: http://www.jamesd.demon.co.uk/csc/faq.html ] Ganesh wrote: > In the following code: > > struct A { > void A::func() {} > }; > > Isn't it valid to declare the member as a qualified name, as A::func, > within scope of A? However I get "error: qualified name is not allowed > in member declaration" when using Comeau (online version 4.3.3) > compiler? Isn't that 3.4.3.1 allow a class member to be referred to > using a qualified-id at any point in its scope? > If I read 3.3.6 correctly, the potential scope of a class member name does not include that name's declarator (in 3.3.6/1 it is explicitly said "the declarative region following the name's declarator"), so 3.4.3.1 does not apply in this case. Alberto ...

Question Can I use explicit qualifier <C> after member function name of a template class?
Bjarne Stroustrup's "The C++ Language Programming" says at P330: "Within the scope of String<C>, qualification with <C> is redundant for the name of the template itself, so String<C>::String is the name for the constructor. If you prefer, you can be explicit: template<class T> String<C>: String<C> () { /*...*/ }" But in fact, I find I cannot use this 'explicit' form for any member function of a template class with g++ or Comeau. Is it the problem of the compilers or the book? an0 wrote: > Bjarne Stroustrup's "T...

Should class-member using declarations behave differently from namespace using declarations?
I cannot find anything in the standard that would account for this peculiar difference in how using declarations behave when the name being imported is an overload of both template and non-template functions. I am getting the same result from both g++ and (the online test version of) Comeau. When I have an template function with non-template overload in a namespace, the using declaration imports both the template and non-template versions, so that the code below compiles successfully. namespace NS { template <typename T> void f(const T &) { } void f(const int &) { } } using NS::f; int main() { f(7); // use specific version f(7.0); // use template version return 0; } Now I try to do what seems to be the same thing, only with class members declarations, and both g++ and Comeau complain: class Base { protected: template <typename T> void f(const T &) { } void f(const int &) { } }; class Derived : public Base { public: using Base::f; // make inherited f public }; int main() { Derived d; d.f(7); // use specific version d.f(7.0); // use template version return 0; } Both compilers complain that Base::f(const T&) with T = double is protected (Comeau says 'error: function "Base::f(const T &) [with T=double]" is inaccessible' and g++ says "`void Base::f(const T&) [with T = doub...

Using C++ namespaces in C# namespace style
Is is OK to use C++ namespaces like namespaces are used in C#? Namely, to hierarchically organize code. For example: std::File std::Container ...

workaround to C "typedef struct name *name;" C vs C++
Hi All, This is valid code in C because "struct name" and "name" are distinct { the poster refers to this part of the subj line: typedef struct name *name; -mod } types, but not in C++ where this produces a compiler error. I have a third party C library that uses this extensively in header files and I need to use this in C++ code. Is there a way around this? Thanks, Brian -- [ See http://www.gotw.ca/resources/clcm.htm for info about ] [ comp.lang.c++.moderated. First time posters: Do this! ] Am 25.08.2011 14:30, schrieb Brian L: > Hi All, > > This is valid code in C because "struct name" and "name" are distinct > > { the poster refers to this part of the subj line: > > typedef struct name *name; > > -mod } > > types, but not in C++ where this produces a compiler error. I have a > third party C library that uses this extensively in header files and I > need to use this in C++ code. > > Is there a way around this? What do you mean with a way around? You did not really explain what the actual reason for this construction is. What do you want to realize? The C++ standard is clear that this typedef declaration is invalid in a non-class scope, because the second 'name' does refer to something different than the second one. I can define a construction that works, but I don't know whether this will help ...

Static member of class not found if class name == name of namespace it's defined in
Some time ago I started a topic on comp.lang.c++ about possible bug in g++ found by me. Although there was no general agreement as to whether it's a compiler bug or language underspecification, there was a conclusion that something was definitely wrong with my code example since g++ and Visual C++ handled it differently. I also sent a bug report to g++ bugzilla more than a month ago, but no one seemed to care as I receved no reply and bug status hasn't changed. Consider this definition: namespace Foo { int x; class Foo { public: static...

Using C++ namespaces in C# namespace style #2
Is is OK to use C++ namespaces like namespaces are used in C#? Namely, to hierarchically organize code. For example: std::File std::Container MikeP wrote: > Is is OK to use C++ namespaces like namespaces are used in C#? Namely, to > hierarchically organize code. For example: > > std::File > std::Container Yes, namespaces can be nested. You can, however, not do anything about what is in std. Your own code base can be organized quite hierarchically. Best, Kai-Uwe Bux On Sun, 2011-04-17, Kai-Uwe Bux wrote: > MikeP wrote: > >> Is is OK to use C++ ...

qualified member name lookup
Hello, If I compile the following program with gcc, clang or comeau I get a error about ambiguity. Is this correct behavior? struct a { int foo; }; struct a2 : virtual a {}; struct b : a2 {}; struct c : a2 {}; struct d : b, c { void f() { b::a2::foo; // OK for MSVC, ERROR for others } }; (clang) error: ambiguous conversion from derived class 'd' to base class 'a2': struct d -> struct b -> struct a2 struct d -> struct c -> struct a2 (gcc) error: 'a2' is an ambiguous base of 'd' (...

Named std::pair members
Hi all. I recently stumbled over a discussion that asserted that code using std::pair<string, int> instead of, say, struct city_t { string name; int pcode; }; is hard to read as every time we access the pair we just work with first and second and the user does not immediately see what first and second should be. What do you think of the following solution where std::pair is extended via a preprocessor macro to contain two arbitrarily named member references in addition to first and second ... ? br, Martin [code] #include <map> #include <string> #define NAMED_PAIR_TYPE(...

What is a qualified name (Namespaces in XML) ?
Dear group readers, Both "Namespaces in XML" recommendations (1.0 and 1.1) define a qualified name with the following sentence : "A qualified name is a name subject to namespace interpretation." This is rather vague. To clarify things, I went checking the BNF grammar of productions 7, 8 and 9, and saw : [7] QName ::= PrefixedName | UnprefixedName [8] PrefixedName ::= Prefix ':' LocalPart [9] UnprefixedName ::= LocalPart So at the syntactic level, a qualified name is prefixed or is not prefixed. My question is : is a qualified name _always_ in a NS (prefixed means there is an explicit NS binding and unprefixed means there is a default NS declaration) or is a qualified name sometimes not in any NS i.e. there is no default NS declaration and the name has no prefix ? I ask this because I thought that a qualified name could be a name outside any NS. And then I read in "Definitive XML Schema" 2nd edition by Priscilla Walmsley that "Unqualified names, on the other hand, are names that are not in any namespace" (page 40). Things are clear from her point of view but I found it not so clear in the recommendation, that's why I am asking this here. Of course, I then told myself that using the term "qualified" would be weird if the name was not in any NS. So the next question is : is there a place in the recommendation where this is answered clearly ? TIA Ludovic Kuty ...

Using declaration for a namespace name ?
Hello I have a header file, generated with flex++, that declares a class phpFlexLexer in the global namespace. I would like to include this header in the yy namespaces, like this: namespace yy { #include "FlexLexer.h" } so the class would than be yy::phpFlexLexer, but than the standard headers included by FlexLexer.h would declare symbols in namespace yy::std this way. Is there a way to write a using-declaration that brings the global name std into namespace yy ? So that if I later #include <iostream> from namespace yy, than any attempts to populate...

How to declare a C or C++ function in a Objective C class
Hi, I need to write few functions, which I need to pass to a method in Objective C class using the pointers to those functions. These functions use the instance variable of the class. Hence they must have access to the variables. I want to write functions in C or C++ because they are crucial to the efficiency of my code and I don't want to use selectors way of passing methods for the same reasons. Then where do I include the function declations and implementations in ..h and .mm files of the class. Ankush In article <1150755755.068251.207990@h76g2000cwa.googlegroups.com>, ankushiitk@gmail.com wrote: > Hi, > I need to write few functions, which I need to pass to a method in > Objective C class using the pointers to those functions. These > functions use the instance variable of the class. Hence they must have > access to the variables. > I want to write functions in C or C++ because they are crucial to the > efficiency of my code and I don't want to use selectors way of passing > methods for the same reasons. > Then where do I include the function declations and implementations in > .h and .mm files of the class. > Ankush Consider adding a userData parameter to your fast C++ functions. Define a struct that has a pointer to your Objective C object instance members. Add an initBridge Objective-C method that initializes the struct with pointers to objective-C members. Now, your fast function ...

C++ namespaces and IDL-module declaration
Hello, first of all I want to thank all of you for the great help in my other topic....;)... Today, I think, I really have a beginner question...I am refactoring an IDL-file of a colleague. He did not use any module declarations in his IDL, which is in my opinion bad style... ..............(First question: Am I right with this???)....... Now, I added a module-declaration to the IDL file and then integrated it to the source code...I actually thought that the IDL compiler would create an ordinary C++ namespace and I just have to add "using namespace"-directives to my ...

Names namespace inside a .C file
One of the implementation file(.C) file has the following code namespace Utils { // declaration & definition of some functions } Is this way having named namespace( inside a .C file instead of a .h) recommended for any case ? qazmlp1209@rediffmail.com (qazmlp) wrote in message news:<db9bbf31.0307212152.321adbb5@posting.google.com>... > One of the implementation file(.C) file has the following code > > namespace Utils > { > // declaration & definition of some functions > } If a function is both declared *and* defined in the source file, you should use ...

overloading std C functions with a namespace
I am working with a large C++ program which, for reasons of backward compatibility, uses C's printf and fprintf rather than iostreams. For a certain type of build I want to provide new functions that change the behaviour of printf and fprintf, and I planned to make them available using a convenient namespace, called 'herring', say, like this: using herring::printf; using herring::fprintf; Now, all the other classes and functions etc are in their own namespace, called 'haddock' say. So all the code has the lines namespace haddock{ ... } arou...

Can a using-declaration name a namespace?
Good day, There is a defect report #406 http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#460 that questions whether the following is legal or not (which is legal according to the standard): namespace n { namespace m { } } using n::m; While the defect report does not say what exactly the defect is, it has the following note: "Notes from the March 2004 meeting: We agree that it should be an error." Can somebody explain to the rest of us why exactly it should be an error? thanks, -boris --- [ comp.std.c++ is moderated. To submit articles, try just posting with ] [ your news-reader. If that fails, use mailto:std-c++@ncar.ucar.edu ] [ --- Please see the FAQ before posting. --- ] [ FAQ: http://www.jamesd.demon.co.uk/csc/faq.html ] boris@kolpackov.net (Boris Kolpackov) wrote in message news:<2lgaksFcl1qcU1@uni-berlin.de>... > Good day, > > There is a defect report #406 > > http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#460 > > that questions whether the following is legal or not (which is > legal according to the standard): > > namespace n > { > namespace m > { > } > } > > using n::m; > > While the defect report does not say what exactly the defect is, > it has the following note: > > "Notes from the March 2004 meeting: > ...

SLIME C-c C-k causes name-conflicts
Hello, I have this problem: I visit a file defining a package in emacs slime, compile and load it with C-c C-k, then switch to the REPL, and do (use- package ...) and get a condition sb-int:name-conflict. (emacs 22.1.1, slime 3.0-alpha, sbcl 1.0.6). I believe my lisp file complies with lisp standards, so give me a hint! Here is the lisp file I load (defpackage #:seidel-sparse (:use :cl) (:export *eps* #:seidel-sparse)) (in-package #:seidel-sparse) (defvar *eps* 5d-6) (defun seidel-sparse(A b x) (declare ;(type (simple-array double-float (*)) b x) ;(type (array list (*)) A...

Qualifying class declarations with defined symbols in C++
Hi! I am looking into some C++ code written by others. They declare some classes like the following: --- class SLICE_API BoolTok : public GrammarBase {...}; --- I wander what the meaning of the SLICE_API qualifier is in the previous declaration? I have never seen anyone qualify the new class-name like that before. By poking around in the rest of the code, I have found SLICE_API to be declared in an included file, as follows: --- #ifndef SLICE_API # ifdef SLICE_API_EXPORTS # define SLICE_API ICE_DECLSPEC_EXPORT # else # define SLICE_API ICE_DECLSPEC_IMP...

Qualified-id and qualified names?
Hello all - i found there are many places where the Standard refers to qualified-id, but actually in that context no qualified-id appears or the obvious intend was to apply to all qualified names. Examples: 3.4.3.1/1: "If the nested-name-specifier of a qualified-id nominates a class, the name specified after the nested-name-specifier is looked up in the scope of the class (10.2), except for the cases listed below: [...] the lookup for a name specified in a using-declaration (7.3.3) also finds class or enumeration names" - no qualified-id appears in a using declaration. 3.4.3.2/1: If the nested-name-specifier of a qualified-id nominates a namespace, the name specified after the nested-name-specifier is looked up in the scope of the namespace ..." - what about declaration "A::f<int> foo;", where the type-specifier does not use qualified-id? 14.7/6: "If the qualified-id in a typename-specifier does not denote a type, the program is ill-formed." - no qualified-id here either! 14.7.2.1/4: "A name is a member of the current instantiation if it is ... — A qualified-id in which the nested-name-specifier refers to the current instantiation." - what about type-specifiers like "T::x y;" ? I've noticed DR 120 ( http://www.open- std.org/jtc1/sc22/wg21/docs/cwg_defects.html#120 ) replaced "qualified-name" by "qualified-id" in some places - could it be that the original ...

Is 'using namespace std;' valid without 'namespace std {};' first?
I ran into a problem on HP-UX 11.00 the other day, where it refused to compile a program using 'using namespace std;' at the top. The reason seem to be that the compiler refuses to accept 'using namespace std;' unless the std namespace was declared first. This triggered my curiosity, and I tried to find out what the ANSI C++ standard had to say about this. I'm unable to find a conclusion, and hope someone here have a clue to spare. Is this code legal ANSI C++, if it is in a file on its own? using namespace std; It compiles when using GCC, but now when using "a...

How to access a variable which is a member of a namespace with a DYNAMIC name??
Hello all, I have the following piece of code to generate a dynamic namespace (i.e. a namespace whose name is dynamically generated): set strScriptName [ info script ] namespace eval $strScriptName { variable strBaseDir [ file dirname [ info script ] ] } Please don't ask WHY I would need to do something as silly as this, just accept that I really do need to do it. ;-) Anyway, my problem is while the above code works just fine, I can't figure out how to ACCESS my strBaseDir variable. =(((( I mean normally (with a static namespace name such as 'foo') I'd just type foo:...

C and C++ naming issues?
http://www.gubbe.ch/code/libcfgparse/cfgtypes_8h-source.html That page contains a header that when included does not define any of the typedefs or any of the value references that are in that file. For instance, I included that file and then tried this: switch (file.get_type("valid_operating_systems")) { case CFG_ITEM_NONE: cerr << "NONE" << endl; break; case CFG_ITEM_INTEGER: cerr << "INT" << endl; break; case CFG_ITEM_BOOLEAN: cerr << "BOOL" << endl; break; case CFG_ITEM_FLOATINGPOINT: cerr << &qu...

Do base class declarations need to be fully namespace-qualified?
Hi, I'm having a problem with the IBM Visual Age compiler (xlC) rejecting the following code: namespace mcrx { class a; class b; } class mcrx::a {}; class mcrx::b : public a {}; with the error: "test.cc", line 6.24: 1540-0063 (S) The text "a" is unexpected. It requires that "public a" be qualified as "public mcrx::a". My understanding is that since b is in namespace mcrx, the compiler should look in that namespace for a match to the base class a. gcc, intel, and Comeau accept the code even in strict mode. Can anyone tell me who is right? Th...

Web resources about - qualified names in namespace member declarations - comp.std.c++

United States Declaration of Independence - Wikipedia, the free encyclopedia
"Declaration of Independence" redirects here. For the type of document generally, see Declaration of independence . For the painting, see Trumbull's ...

United States Declaration of Independence - Wikipedia, the free encyclopedia
"Declaration of Independence" redirects here. For the type of document generally, see Declaration of independence . For the painting, see Trumbull's ...

North Korea says South's pulling out of industrial zone 'declaration of war'
[ Brisbane Times - Text-only index ] North Korea says South's pulling out of industrial zone 'declaration of war' Date: February 12 2016 Philip ...

Two confirmed cases of Zika virus in Australia, researchers warn after WHO emergency declaration
The NSW Health department has confirmed two cases from passengers travelling from the Caribbean.

North Korea says South's pulling out of industrial zone 'declaration of war'
... zone on Thursday, calling the South's move to suspend operations, in retaliation for Sunday's rocket launch by the North, a &quot;declaration ...

North Korea says South's pulling out of industrial zone 'declaration of war'
... industrial zone on Thursday, calling the South's move to suspend operations, in retaliation for Sunday's rocket launch by the North, a "declaration ...

Flint water contamination in Michigan prompts emergency declaration by President Barack Obama
Barack Obama declares a state of emergency in Michigan, freeing up federal aid to help an area affected by contaminated water.

Snyder Asks Obama For Emergency Declaration In Flint Water Crisis
The Attorney General's office is also investigating the water crisis to determine what, if any Michigan laws were violated.

Vanessa Hudgens’ public declaration of love could cost her
❤️❤️ @austinbutler #sedonadreams A photo posted by Vanessa Hudgens (@vanessahudgens) on Feb 14, 2016 at 1:12pm PST We’ve all been there, right? ...

Hillary Confuses The Constitution With Declaration Of Independence During Anti-Gun Diatribe
Hillary Confuses The Constitution With Declaration Of Independence During Anti-Gun Diatribe

Resources last updated: 3/6/2016 4:37:13 PM