Microsoft KB Archive/167355

= BUG: You still receive a "warning C4768" message even if you use the warning pragma to disable the warning in Visual C++ =

Article ID: 167355

Article Last Modified on 10/3/2005

-

APPLIES TO


 * Microsoft Visual C++ 5.0 Enterprise Edition
 * Microsoft Visual C++ 6.0 Enterprise Edition
 * Microsoft Visual C++ 5.0 Professional Edition
 * Microsoft Visual C++ 6.0 Professional Edition
 * Microsoft Visual C++ 6.0 Standard Edition

-



This article was previously published under Q167355



SYMPTOMS
Warnings similar to the following are generated even if you use the warning pragma to disable the warning:

warning C4786:

'std::rb_tree>::TransClosureNode, CAiSpanningTree>::TransClosureNode,std::ident>::TransClosureNode,CAiSpanningTree>::TransClosureNode>,std::less>::TransClosureNode>>' : identifier was truncated to '255' characters in the debug information

The code: #pragma warning(disable:4786) disables warnings that list the file and line number. For example:   C:\test\Text.cpp(25) : warning C4786:



STATUS
Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section.

This problem was corrected in Microsoft Visual C++ .NET.



MORE INFORMATION
This warning can be ignored. However, the identifier may not be accessible or viewable in the debugger.

Sample code
/*  Compiler Options: /Zi */

#include   #include    #pragma warning(disable:4786)

namespace std {

template  struct ident {}; template  struct pair {}; template  struct binary_function {}; template struct less : binary_function<T, T, bool> {}; template <class T, class Distance> struct bidirectional_iterator {}; template <class Key, class Value, class KeyOfValue, class Compare> class rb_tree { public: typedef int size_type; typedef int difference_type; typedef void* link_type; struct rb_tree_node {}; typedef Key key_type; class iterator : public bidirectional_iterator<Value, difference_type> {}; class const_iterator  : public bidirectional_iterator<Value,difference_type> { protected: link_type node; const_iterator(link_type x) : node(x) {} };            public: size_type count(const key_type& x) const; };       template <class Key, class Value, class KeyOfValue, class Compare> rb_tree<Key, Value, KeyOfValue, Compare>::size_type rb_tree<Key, Value, KeyOfValue, Compare>:: count(const Key& k) const { size_type n = 0; return n;            }; template <class Key, class Compare>  class set { typedef ::std::rb_tree<Key, Key,ident<Key, Key>, Compare> rep_type; rep_type t;    };

}

template <class Node, class Compare>class CAiTransitiveClosure{ public:

typedef std::set<Node, Compare > NodeSet; NodeSet m_todo;

};

template <class Node, class Compare> class CAiSpanningTree { public:

typedef std::set<Node, Compare > NodeSet;

protected:

typedef Node CAiSpanningTreeNode; typedef NodeSet CAiSpanningTreeNodeSet;

private:

struct TransClosureNode {}; struct TransClosureGraph : public CAiTransitiveClosure<TransClosureNode,

std::less<TransClosureNode> >

{};

public:

CAiSpanningTree(const Node& initialNode); CAiSpanningTree(const NodeSet& initialNodes);

};

struct State { }; class CformSpanningTree:public CAiSpanningTree<State,std::less<State>> {  public:

CFormSpanningTree( NodeSet initial) : CAiSpanningTree<State, std::less<State> >(initial) {}

};

Keywords: kbbug kbfix kbnoupdate kbcode kbcompiler KB167355

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.